Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak sprawdzić, czy lista/zestaw znajduje się dokładnie w innej liście?

Nadal możesz używać having , ale przetestuj dla każdego produktu — i pod kątem braku innego 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 ;

Zauważ, że używa to skrótu MySQL, w którym wyrażenia logiczne są traktowane jako liczby z 1 dla true i 0 za fałsz. Standardowa składnia to:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak dynamicznie transponować wiersze do kolumn w MySQL?

  2. Odzyskaj hasło roota MySQL

  3. Przechowywanie HTML w MySQL:blob czy tekst?

  4. Jak zrobić pole NULL za pomocą narzędzi MySQL GUI?

  5. Jak przekonwertować ten złożony SQL na zapytanie modelu Django?