Извиняюсь, если уже есть ответ на этот вопрос, я искал и, вероятно, не мог придумать правильные ключевые слова, чтобы найти его.
У меня есть таблица с более чем 1000 таблиц (например, клиенты).
У меня есть запрос, требующий сведения об известном списке клиентов (например, по CustomerID - 1,79,14,100,123)
Функция IN() - это то, что я хотел бы использовать для запроса.
Я знаю, чтобы найти клиентов, которые соответствуют списку, я бы написал:
SELECT * FROM Customers WHERE CustomerID IN (1,79,14,100,123)
Чтобы найти те, которых нет в списке, я бы написал
SELECT * FROM Customers WHERE CustomerID NOT IN (1,79,14,100,123)
Вопрос
Как найти список клиентов, которые НЕ вернулись или не нашли совпадений в списке.
Предположим, что таблица "Клиенты" имеет только (1,79,100). Тогда это будет означать, что 14 и 123 не будут сопоставлены. Как мне найти те значения, которые не находят соответствия.
Я был упрощен в моем примере. Мой список предметов имеет более 300 идентификаторов, поэтому использование условия WHERE
с длинным списком OR
было бы громоздким/неуклюжим. Я подумал о том, чтобы объединиться с self LEFT JOIN и определить парные значения NULL, которые будут 14 и 123
Есть ли более элегантный подход?