У меня есть таблица с 17 записями. Я выбираю строки по условию where, например, под запросом:
SELECT * FROM T1 WHERE (c1='AA' and c3=13)
Результатом этого запроса были 2 записи. теперь я хочу выбрать 15 записей таблицы T1 !!! я добавляю оператор not
перед тем условием where, как:
SELECT * FROM T1 WHERE not (c1='AA' and c3=13)
Результатом этого запроса были 14 записей. но в таблице 17 записей невозможно использовать предложение EXCEPT
, потому что в этом разделе выбираются только отдельные записи.
Что делать, если я использую EXISTS
?? для SQL Server
select * from t1 t
where not exists(
select * from t1 where (t.c1='AA' and t.c3=13)
)
SELECT * FROM t1
WHERE PrimaryKey_Col not in (
SELECT PrimaryKey_Col FROM t1 WHERE t.c1='AA' and t.c3=13
);
Примечание. Этот запрос легко работает на основе PrimaryKey
В случае, если Id является Duplicate, то используйте функцию Row_number().
SELECT T1.* FROM T1
LEFT JOIN (SELECT * FROM T1 WHERE (c1='AA' AND c3=13)) AS T2
ON(T1.ID=T2.ID) WHERE T2.ID IS NULL;
Пожалуйста, попробуйте вот так, ЗАКЛЮЧИТЕ пункт
SELECT DISTINCT * FROM
(
SELECT * FROM T1
EXCEPT
SELECT * FROM T1 WHERE (c1='AA' and c3=13)
)k