我正在使用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的答案顯示了正確的語法。 –