是否可以在沒有ON
聲明的情況下編寫連接查詢?以及這些連接如何不同LEFT JOIN, RIGHT JOIN
的作品。如何在沒有開啓條件的情況下使用mysql JOIN?
回答
MySQL documentation涵蓋了這個主題。
這裏是一個簡介。當使用join
或inner join
時,on
條件是可選的。這與ANSI標準不同,幾乎與其他任何數據庫不同。效果是cross join
。同樣,您可以使用on
子句與cross join
,這也與標準SQL不同。
交叉連接創建一個笛卡爾積 - 也就是說,從第一個表格開始的1行和從第二個開始的1行的每個可能的組合。具有三行('a','b'和'c')以及具有四行(例如1,2,3,4)的表的交叉連接將具有12行。
在實踐中,如果你想要做一個交叉連接,然後使用cross join
:
from A cross join B
比要好得多:
from A, B
和:
from A join B -- with no on clause
的on
子句是右外連接或左外連接所必需的,因此討論是不相關的爲他們。
如果您需要了解不同類型的連接,那麼您需要對關係數據庫進行一些研究。 Stackoverflow不適合討論這個級別。
見http://www.sitepoint.com/understanding-sql-joins-mysql-database/
您可以使用「使用」,而不是「ON」的一些例子,如查詢
SELECT * FROM table1 LEFT JOIN table2 USING (id);
如需進一步說明,兩個表中的連接列必須命名爲USING才能工作 – rmirabelle 2016-02-02 18:26:17
您可能還需要調查使用UNION的,它結合了多個表對於一個輸出:SQL - Combine two tables for one output
這與OP的問題有何關係? – 2017-11-22 21:14:29
- 1. 在沒有JOIN的情況下在MySQL中存儲關係
- 2. 使用開關的情況下在蟒蛇有特殊條件
- 3. 如何在沒有競爭條件的情況下重命名()?
- 4. 開關的情況下沒有在JavaScript
- 5. 如何在沒有json文件的情況下使用JSON?
- 6. 如何在沒有插件的情況下使用fancybox和wordpress?
- 7. 如何在沒有打開cmd的情況下打開steam/etc?
- 8. MySQL使用JOIN/GROUP BY時的情況
- 9. 在JOIN中繼承使用UNION的情況下 - MySQL
- 10. mysql:做條件不同的情況下
- 11. 有條件的情況下加入
- 12. 如何在不使用INNER JOIN的情況下連接表?
- 13. SQL有條件更新的情況下
- 14. 如何在沒有EULA的情況下啓動ChromeDriver.exe?
- 15. 如何在沒有Xcode IDE的情況下在Swift中開發
- 16. 如何在沒有systemctl /服務工具的情況下啓動mysql服務
- 17. 如何在沒有黑條的情況下嵌入YouTube視頻?
- 18. 如何在沒有滾動條的情況下滾動Div?
- 19. 如何在沒有任何圖標的情況下使用NSAlert?
- 20. 情況下,當MySQL與多個條件
- 21. 如何在沒有秒的情況下格式化MySQL TIMEDIFF?
- 22. 如何在沒有CORS的情況下使用Yammer API調用?
- 23. 如何在沒有用戶access_token的情況下使用publish_pages?
- 24. 如何在沒有NavgationController的情況下打開UIViewControllers和Keepstate
- 25. 如何在沒有Visual Studio的情況下開發Microsoft Office AddIn
- 26. Orchard如何在沒有致電RenderBody的情況下離開?
- 27. 如何在沒有動畫的情況下打開Android活動
- 28. 如何在沒有終端的情況下打開WebStorm
- 29. 如何在沒有安裝開發庫的情況下在C中使用sqlite3?
- 30. 如何在沒有NPM的「要求」的情況下使用React?
由於「ON」子句告訴服務器表是如何相關的,所以沒有。如果你的不同連接類型都給出相同的結果,那麼你會以某種方式做錯,並且添加一些代碼可以幫助我們發現你的問題。同時,請轉到[Jeff Atwood的博客](http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html)2分鐘介紹不同的連接類型。 – fvu 2013-05-09 21:04:40