sql >> Databáze >  >> RDS >> Mysql

Jak zjistit, zda je seznam/sada přesně v jiném seznamu

Stále můžete používat having , ale test pro každý produkt – a pro nepřítomnost jakéhokoli jiného produktu:

SELECT o.order_id
FROM orders o
GROUP BY o.order_id
HAVING SUM( product_id = 222 ) > 0 AND
       SUM( product_id = 555 ) > 0 AND
       SUM( product_id NOT IN (222, 555) ) = 0 ;

Všimněte si, že se používá zkratka MySQL, kde se s booleovskými výrazy zachází jako s čísly s 1 pro true a 0 za falešné. Standardní syntaxe je:

HAVING SUM( CASE WHEN product_id = 222 THEN 1 ELSE 0 END) > 0 AND
       SUM( CASE WHEN product_id = 555 THEN 1 ELSE 0 END ) > 0 AND
       SUM( CASE WHEN product_id NOT IN (222, 555) THEN 1 ELSE 0 END ) = 0 ;



  1. Odeberte koncové nuly z desítkové soustavy na serveru SQL Server

  2. Nainstalujte chybu návratu mysql-python v CentOs

  3. Odstranit spojení ze dvou tabulek

  4. Oracle SQLPlus nastavení proměnné prostředí na základě proměnné