我正在使用 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
符号:a 代表别名
这个结果理论上看起来像
data
id | c1 | c2 | a3 | a6
-------------------------
1 | 11 | 12 | v11 | v12
2 | 21 | 22 | v21 | v22
请注意,从技术上讲,所有 a 都在这里,但 3 和 6 是我感兴趣的