在mysql JOIN上使用OR

时间:2011-09-10 03:26:00

标签: mysql join

有没有办法指定一个像这样的

的mysql查询
SELECT * FROM a LEFT JOIN b ON (a.xyz = b.xyz OR a.xyr = b.xyr);

因此当ON语句中的任何LEFT JOIN条件匹配时返回行...

如果是的话,这类查询的语法是什么?

2 个答案:

答案 0 :(得分:1)

根据docsON子句是条件表达式。所以,您可以使用这样的表达式。事实上,你所拥有的应该是有用的。

但是,根据您的数据和联接类型,它可能会产生一些不直观的结果。

答案 1 :(得分:1)

将select语句拆分为两部分并使用UNION。

SELECT * FROM a LEFT JOIN b on a.xyz = b.xyz
UNION
SELECT * FROM a LEFT JOIN b on a.xyr = b.xyr

如果MySQL中的UNION与SQL Server中的UNION类似,它应该生成一个没有重复行的集合。否则,您可能需要使用DISTINCT。