[英]JOIN on references
SQL為什么不包含用於在一個表中的列上指定聯接以引用另一表中的列的關鍵字?
像NATURAL
中的NATURAL
一樣,它指定在具有相同名稱的列上。
我經常發現自己在執行SELECT ... FROM a JOIN b ON a.b_id=b.id;
其中b_id
列a
被定義為引用id
列b
。 看起來很自然地輸入很多東西嗎?
出於某些我未曾想到的原因,該功能會很難實施或不受歡迎嗎?
我最了解Postgresql的SQL,因此,如果大多數其他RDBMS具有這種功能,那么問題就是為什么postgresql沒有它。
實際上,SQL確實如此。 它是USING
子句:
select . . .
from a join
b
using (id);
如文檔所述 :
USING子句是一種簡寫形式,使您可以利用特定的情況,即連接的雙方對連接列使用相同的名稱。 它采用逗號分隔的共享列名稱列表,並形成一個連接條件,其中包括每個條件的相等性比較。 例如,使用USING(a,b)聯接T1和T2會產生聯接條件ON T1.a = T2.a AND T1.b =T2.b。
仍然確實要求兩個表中的名稱相同。 但是,由於名稱是在聯接條件中明確指定的,因此這是natural join
的安全替代方法(我認為這是一個等待發生的錯誤)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.