Альтернатива предложению МИНУС в MySQL? - PullRequest
0 голосов
/ 23 февраля 2020

Я работаю над некоторыми запросами в MySQL и выяснил, что предложение minus не поддерживается.

Есть ли альтернатива для предложения minus в MySQL? Как я могу вычесть значения в запросе по другому запросу? Предложения

select * from A
minus   //This returns a syntax error in the query format
select * from B;

difference и except также не принимаются в MySQL

Ответы [ 2 ]

2 голосов
/ 23 февраля 2020

A LEFT JOIN будет альтернативой, которую вы хотите, только если она основана на равенстве всех соответствующих столбцов обеих таблиц, а не только на равенстве первичного ключа:

SELECT A.* 
FROM A LEFT JOIN B 
ON A.col1 <=> B.col1 AND A.col2 <=> B.col2 AND .....
WHERE B.primarykeycolumn IS NULL

Я использовал NULL безопасный оператор <=>, чтобы также проверить равенство значений NULL. Вы также можете использовать NOT EXISTS:

SELECT A.* FROM A
WHERE NOT EXISTS (
  SELECT 1 FROM B
  WHERE A.col1 <=> B.col1 AND A.col2 <=> B.col2 AND ..... 
)
2 голосов
/ 23 февраля 2020

MySQL не поддерживает MINUS, но вместо этого вы можете использовать LEFT JOIN. Вероятно, что-то вроде:

SELECT * 
FROM a
LEFT JOIN b on (a.id=b.id)
WHERE b.id is null
...