Ilja: Subquery eigentlich unkorreliert, MySQL meint aber korreliert

Beitrag lesen

yo,

Ich möchte sämtliche Produkte haben mit Ausnahme von solchen, die in ganz bestimmten Listen enthalten sind. Die IDs dieser speziellen Listen habe ich, sagen wir mal 1, 2 und 3.

SELECT p.id_products
FROM products p
WHERE 0 = (SELECT COUNT(*)
           FROM prods_lists pl
           WHERE pl.id_lists IN (1,2,3)
           AND pl.id_products = p.id_products
          )
;

alternativ

SELECT p.id_products
FROM products p
WHERE NOT EXISTS (SELECT pl.id_lists
                  FROM prods_lists pl
                  WHERE pl.id_lists IN (1,2,3)
                  AND pl.id_products = p.id_products
                  )
;

Ilja