Mysql
 sql >> Database >  >> RDS >> Mysql

SQL JOIN per trovare record che non hanno un record corrispondente con un valore specifico

Crea un indice su sa_signatures (type, order_id) .

Questo non è necessario per convertire la query in un LEFT JOIN a meno che sa_signatures consente null in order_id . Con l'indice, il NOT IN si esibirà pure. Tuttavia, nel caso fossi curioso:

SELECT  o.*
FROM    sa_order o
LEFT JOIN
        sa_signatures s
ON      s.order_id = o.order_id
        AND s.type = 'administrative director'
WHERE   s.type IS NULL

Dovresti scegliere un NOT NULL colonna da sa_signatures per il WHERE clausola per funzionare bene.