簡體   English   中英

交叉加入使用?

[英]CROSS JOIN with USING?

在使用JavaScript SQL解析器時,我正在針對sqllogic測試進行測試,SQLite也使用測試來驗證邏輯。

我遇到了這個SQL,無法弄清楚如何處理它。

SELECT ALL * FROM tab1 cor0 CROSS JOIN tab1 USING col1, col2, tab2 AS cor1;

據我了解, CROSS JOIN將兩個表中的所有行聯接在一起-所以我想USING部分沒有效果?

我的結論是否正確?:對於coss來說,可以忽略USING部分嗎?

這只是SQLite(也許還有MySQL)的怪異之處。 CROSS JOIN應該產生笛卡爾積,並且不應該帶有USINGON子句。

但是,SQLite語法允許USING CROSS JOINONUSING子句。 在這種情況下,它的行為類似於INNER JOIN

另外,SQLite允許您為其他類型的連接省去ON / USING子句。 在這種情況下,它們的行為類似於CROSS JOIN

我的建議:不要學習這種語法(這是非常不標准的)。 使用以下規則:

  • 始終對內部和外部聯接使用ON / USING
  • 切勿CROSS JOIN使用ON / USING
  • 避免NATURAL JOIN 因為這里沒有列出JOIN鍵,所以代碼的可維護性要差得多,容易出現細微的錯誤,並且如果基礎表發生更改,則可以更改含義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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