Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL JOIN pour rechercher des enregistrements qui n'ont pas d'enregistrement correspondant avec une valeur spécifique

Créer un index sur sa_signatures (type, order_id) .

Ce n'est pas nécessaire pour convertir la requête en LEFT JOIN sauf si sa_signatures autorise les valeurs nulles dans order_id . Avec l'index, le NOT IN effectuera également. Cependant, juste au cas où vous seriez curieux :

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

Vous devez choisir un NOT NULL colonne de sa_signatures pour le WHERE clause pour bien performer.