используя ИЛИ на mysql JOINs - PullRequest
1 голос
/ 10 сентября 2011

Есть ли способ указать запрос MySQL, который делает что-то вроде этого

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

и, следовательно, возвращает строки, когда совпадает любой из критериев LEFT JOIN в операторе ON ...

если да, каков будет синтаксис таких запросов?

Ответы [ 2 ]

1 голос
/ 10 сентября 2011

Разделите оператор выбора на две части и используйте UNION.

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

Если UNION в MySQL подобен UNION в SQL Server, он должен создать набор без дублирующихся строк. В противном случае вам может понадобиться использовать DISTINCT.

1 голос
/ 10 сентября 2011

Согласно документам предложение ON является условным выражением . Так что да , вы можете использовать такое выражение. На самом деле, именно то, что у вас есть, должно работать.

Однако, в зависимости от ваших данных и типа соединения, он может дать некоторые неинтуитивные результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...