SQL условная группа по - PullRequest
       3

SQL условная группа по

0 голосов
/ 07 декабря 2018

Учитывая эту таблицу

id_order|id_status|
--------|---------|
141     |4        |
141     |4        |
142     |4        |
142     |4        |
143     |5        |
143     |4        |

Я хочу выполнить запрос, который извлекает те id_orders, у которых все id_status равны 4, поэтому в этом случае выходные данные должны быть:

id_order
--------
141
142

Заказ с id_order 143 будет исключен, поскольку он содержит одну строку с id_status <> 4.

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

Что-то вроде этого будет работать, но, в зависимости от ваших индексов, может быть медленным

выберите отличный id_order из t, где id_order нет в (выберите id_order из t, где id_status <> 4);

0 голосов
/ 07 декабря 2018

Почему бы не

Выберите id_order из t, где id_status = 4 группы по id_order

0 голосов
/ 07 декабря 2018

Я бы просто использовал group by и having:

select id_order
from t
group by id_order
having min(id_status) = max(id_status) and min(id_status) = 4;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...