Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL JOIN, um Datensätze zu finden, die keinen übereinstimmenden Datensatz mit einem bestimmten Wert haben

Erstellen Sie einen Index für sa_signatures (type, order_id) .

Dies ist nicht notwendig, um die Abfrage in einen LEFT JOIN umzuwandeln außer sa_signatures erlaubt Nullen in order_id . Mit dem Index, dem NOT IN wird auch auftreten. Aber nur für den Fall, dass Sie neugierig sind:

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

Sie sollten NOT NULL wählen Spalte von sa_signatures für das WHERE Klausel, um gut zu funktionieren.