2010-02-12 73 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; 

分享和享受。

相关问题