MySQL - MINUS

U jednoho projektu jsem po dlouhé době narazil na problematiku funkcí v MySQL kdy bylo pro dané řešení vhodné využít funkce MINUS, která není v MySQL implementována.

Zápis v SQL

SELECT id, name FROM a
MINUS
SELECT id, name FROM b

nahradíme jednoduše pomocí transformace za subquery

SELECT DISTINCT id, name
FROM a
WHERE (id, name) 
NOT IN (SELECT id, name FROM b);

Ti zkušenější mohou namítnout, že předchozí zápis není ničím jiným než klasický left join, který hledá vše, co není v druhé tabulce:

SELECT DISTINCT a.id, a.name
FROM a LEFT JOIN b USING (id, name)
WHERE b.id IS NULL