2016-02-28 83 views
0

我有多個具有相同主鍵字段但沒有其他相同字段的表。我要選擇像這樣從所有的表匹配到一個特定的主鍵列的集合,東西:(!感謝@Abelisto)從多個表中選擇列

SELECT T1.a, T2.b, ..., TN.z FROM T1, T2, ..., TN WHERE T1.pk = "abc" 
+0

您是否嘗試過使用'join'? 'select ... from t1 join t2 on t1.id = t2.id ...'? – sgeddes

回答

2
SELECT T1.a, T1.b, ..., TN.z 
FROM T1 INNER JOIN T2 ON T1.pk = T2.pk 
INNER JOIN T3 on T1.pk = T3.pk 
... 
INNER JOIN TN on T1.pk = TN.pk 
AND TN.pk = "abc" 

或者在較短的形式。

SELECT T1.a, T1.b, ..., TN.z 
FROM T1 JOIN T2 using(pk) 
JOIN T3 using(pk) 
... 
JOIN TN using(pk) 
WHERE TN.pk = "abc" 
+2

有幾件事情可以縮短查詢時間:在Postgres中,默認情況下聯接是內聯的,所以'INNER JOIN'等於'JOIN';如果列具有相同的名稱,那麼可以使用(pk)'而不是't1.pk = t2.pk'上的t1 join t2'來寫入t1連接t2。 – Abelisto