MySQL Выбрать строки, соответствующие заданному c условию - PullRequest
0 голосов
/ 06 мая 2020

У меня есть таблица orders, которая выглядит так:

order_id | item_id | quantity
     1        1         2
     1        2         5
     2        3         13
     2        4         5
     3        3         1

Я действительно хочу ВЫБРАТЬ все строки, но я бы хотел пропустить целые заказы, которые содержат ровно 13 элементов item_id 3 В этом примере он должен пропускать строки с order_id = 2. Можно ли сделать одним простым запросом?

1 Ответ

1 голос
/ 06 мая 2020

Вы можете использовать предложение NOT EXISTS, чтобы найти любые заказы, в которых нет 13 элементов item_id 3:

SELECT *
FROM orders o1
WHERE NOT EXISTS (SELECT * 
                  FROM orders o2
                  WHERE o2.order_id = o1.order_id
                    AND o2.item_id = 3 
                    AND o2.quantity = 13)

Вывод:

order_id    item_id     quantity
1           1           2
1           2           5
3           3           1

Демо на dbfiddle

...