Для проверки того, что значение не попадает в список значений, можно воспользоваться NOT IN
.
Запрос
SELECT *
FROM store
WHERE store_id NOT IN (100, 300, 500)
ORDER BY store_id
вернет все магазины, кроме магазинов с идентификаторами 100, 300 и 500.
# | store_id | name | site_url |
---|---|---|---|
1 | 200 | Марс | mars.ru |
2 | 201 | Сатурн | saturn.ru |
3 | 301 | Адалин-family | adalin-ultra.ru |
4 | 302 | Адалин-ultra | |
5 | 400 | Европа | evropa.ru |
6 | 600 | Umi | |
7 | 800 | Универсам | |
8 | 900 | Big | big.ru |
Список значений внутри NOT IN
можно заменить подзапросом.
Найдем города без магазинов:
SELECT *
FROM city c
WHERE c.city_id NOT IN (SELECT sa.city_id
FROM store_address sa)
# | city_id | name | timezone_id |
---|---|---|---|
1 | 7 | Кемерово | 6 |
2 | 10 | Иркутск | 7 |