2010-02-12 48 views
1

我有一個MySQL查詢時,將執行以下操作,Mysql是否可以執行以下操作?

SELECT * FROM categoryTable 
LEFT JOIN userMenuTable 
ON userMenuTable.categoryId = categoryTable.categoryId 

這個返回滿足這一條件

ON userMenuTable.categoryId = categoryTable.categoryId 

我希望這將有可能把所有的結果,也是的結果那些來自JOIN?

回答

0

在您的示例中,左外連接的結果將包含「左」categoryTable的所有記錄,即使連接條件未在「右」userMenuTable中找到任何匹配記錄。

另一方面,右外連接類似左外連接,除了表格的處理方式相反。來自「right」userMenuTable的每一行都將出現在結果集中至少一次。

由於a1ex07 suggested in another answer,它可能看起來像你需要一個full outer join,這在MySQL能夠與LEFT JOINRIGHT JOIN之間的UNION進行仿真。

3

我想你需要FULL JOIN(MySQL不具有語法,但你可以通過UNION +左+右達到期望的結果JOIN)

SELECT * FROM categoryTable 
LEFT JOIN userMenuTable 
ON userMenuTable.categoryId = categoryTable.categoryId 
UNION 
SELECT * FROM categoryTable 
RIGHT JOIN userMenuTable 
ON userMenuTable.categoryId = categoryTable.categoryId 
0

我想,也許你在找什麼是一個完整的外連接。 MySQL不支持FULL OUTER JOIN,但您可以使用LEFT和RIGHT JOINS獲得等效項:

SELECT * FROM categoryTable LEFT JOIN userMenuTable 
    ON categoryTable.categoryId = userMenuTable.categoryId 
UNION ALL 
SELECT * FROM categoryTable RIGHT JOIN userMenuTable 
    ON categoryTable.categoryId = userMenuTable.categoryId 
WHERE categoryTable.categoryId IS NULL; 

分享和享受。

相關問題