Итак, у меня есть таблица под названием «HoldingQueue», и я хочу сравнить две строки с двумя значениями и вернуть каждую строку, которая не соответствует ОБОИМ этим значениям. Вот пример содержания:
* * * * * * * * * * * *
* ItemCode * Channel *
* * * * * * * * * * * *
* 1PX1 * Test *
* * * * * * * * * * * *
* 2PX1 * Test *
* * * * * * * * * * * *
* 3PX1 * Test2 *
* * * * * * * * * * * *
И запрос:
SELECT * FROM HoldingQueue WHERE ItemCode<>"1PX1" AND Channel<>"Test";
Это возвращает ТОЛЬКО «3PX1 | Test2» — где я хочу, чтобы он возвращал все, что не является «1PX1 | Test», поэтому «2PX1 | Test» также должен возвращаться.
Любые идеи? Типа бьюсь головой о стену здесь.
Редактировать: хорошо, значит, он работает с небольшим набором данных, используя ИЛИ... но я только что понял проблему, с которой столкнулся. Я пытаюсь вытащить «ItemCode» и «Channel», чтобы сравнить их с другой таблицей, в которой есть несколько записей, но теперь я понимаю, что, поскольку в этой таблице есть НЕСКОЛЬКО записей, ВСЕ квалифицируется по крайней мере один раз как не имеющий ни множества значений.
Я думаю, что мой вопрос сложнее, чем этот.
Правка № 2: понятно...
SELECT Channel, ItemCode FROM HoldingQueue H
WHERE NOT EXISTS
(SELECT * FROM SKUList S
WHERE
H.ItemCode=S.SKU
AND
H.Channel=S.Channel
) GROUP BY H.Channel,H.ItemCode;
Я хотел, чтобы все элементы, которые не соответствуют НИЧЕГО из второй таблицы SKUList. Это сделало это. Отмечу ответ Сергея Кудрявцева, потому что он правильно ответил на мой первоначальный вопрос (что не учитывало большую часть проблемы, с которой я столкнулся)