Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да разберете дали списък/набор е точно в друг списък

Все още можете да използвате having , но тествайте за всеки продукт -- и за липса на друг продукт:

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 ;

Имайте предвид, че това използва съкращенията на MySQL, където булевите изрази се третират като числа с 1 за вярно и 0 за невярно. Стандартният синтаксис е:

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. PDO в производителността на mysql

  2. Кои редове се връщат при използване на LIMIT с OFFSET в MySQL?

  3. Сравняване на периоди от време

  4. Как да направя размито съвпадение на имена на компании в MYSQL с PHP за автоматично довършване?

  5. Как да зададете централна маса в Laravel 5.4?