簡體   English   中英

加入參考

[英]JOIN on references

SQL為什么不包含用於在一個表中的列上指定聯接以引用另一表中的列的關鍵字?

NATURAL中的NATURAL一樣,它指定在具有相同名稱的列上。

我經常發現自己在執行SELECT ... FROM a JOIN b ON a.b_id=b.id; 其中b_ida被定義為引用idb 看起來很自然地輸入很多東西嗎?

出於某些我未曾想到的原因,該功能會很難實施或不受歡迎嗎?

我最了解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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM