Utilizzo di NOT IN:
SELECT w.*
FROM WIDGET w
WHERE w.widget_id NOT IN (SELECT c.widget
FROM CHOSEN c
WHERE c.user_id = $user_id)
Utilizzo di NOT EXISTS:
SELECT w.*
FROM WIDGET w
WHERE NOT EXISTS (SELECT NULL
FROM CHOSEN c
WHERE c.widget_id = w.widget_id
AND c.user_id = $user_id)
UNISCI A SINISTRA/È NULLA:
SELECT w.*
FROM WIDGET w
LEFT JOIN CHOSEN c ON c.widget_id = w.widget
AND c.user_id = $user_id
WHERE w.widget IS NULL
Prestazioni:
Se il le colonne confrontate (widget_id in una delle due tabelle) non sono annullabili, LEFT JOIN/IS NULL offre le migliori prestazioni su MySQL . Se il le colonne sono annullabili (il valore potrebbe essere NULL), NOT IN o NOT EXISTS ha prestazioni migliori .