sql >> Database >  >> RDS >> Mysql

Hoe te vinden of een lijst/set precies in een andere lijst staat?

Je kunt nog steeds having . gebruiken , maar test voor elk product -- en voor de afwezigheid van een ander product:

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 ;

Merk op dat dit de MySQL-afkorting gebruikt, waarbij booleaanse uitdrukkingen worden behandeld als getallen met 1 voor true en 0 voor vals. De standaard syntaxis is:

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. MyBatis-parameter van HashMap

  2. Hoe verwijder ik alle niet-alfabetische tekens uit de tekenreeks in SQL Server?

  3. hoe kan ik twee strings matchen, zelfs als ze 1 teken verschillend zijn?

  4. Krijg invoerwaarde uit database op basis van eerdere invoer