我正在使用pyodbc和postgres。我可以给多个列别名吗?怎么样?
我可以给多个列别名吗?
这里是我的问题的描述:
数据结构:
data
id | c1 | c2
-------------
1 | 11 | 12
2 | 21 | 22
符号:C是列
dictionary
id | key | value
----------------
1 | k1 | v11
1 | k2 | v12
2 | k1 | v21
2 | k2 | v22
符号:K是关键,V是价值
您可以将k1和k2视为两列。数据结构就是这样,因为它不断变化。我没有设计它,我只需要去设计它。
我想不出一个SQL查询(由一些名最重要的是,对于一些行,我可以访问K1和K2列)给我像下面这样:
data
id | c1 | c2 | k1 | k2
-------------------------
1 | 11 | 12 | v11 | v12
2 | 21 | 22 | v21 | v22
这个问题我继续运行是如果我别名表,然后SQL结果将包含字典表中的两个“关键”列,这意味着我无法控制我访问这两个列,但如果我别名行,然后我可以不控制在sql语句中引用哪些表。
我想解决办法是别名两列:
SELECT * FROM data
FULL JOIN dictionary AS a1,a2,a3
ON data.id = a1
FULL JOIN dictionary AS a4,a5,a6
ON data.id = a4
WHERE a2 = k1 and a5 = k2
符号:一个是别名
这样的结果在理论上看起来像
data
id | c1 | c2 | a3 | a6
-------------------------
1 | 11 | 12 | v11 | v12
2 | 21 | 22 | v21 | v22
注意所有a在技术上会在这里,但是3和6是我感兴趣的那些
您刚刚构造了新的语法,还是仅仅是一个我从未使用过的别名构造? – 2012-06-28 23:59:10
我认为这里的关键词是“汇总”;场景中结果集的*形状*(即列)发生变化,对吧?一般来说SQL是不好的,在这种情况下,动态(或一次性)查询就会得到'k0 ... kN'列... – 2012-06-29 00:14:35
是的,我正在编写语法来描述我想要的行为(哪些列我需要访问)。 Andomar的答案显示了正确的语法。 –