原始查詢:
SELECT user_name
FROM usr
WHERE user_name IN ('Abcd','Abce','Abcg','Avfd','Asdf')
;
要反向邏輯,只要加入「不」:
SELECT user_name
FROM usr
WHERE user_name NOT IN ('Abcd','Abce','Abcg','Avfd','Asdf')
;
哎呀,看來你想讓它周圍的其他方法:(該解決方案可以需要其他的語法,這取決於你的DBMS/SQL方言)這句法對於PostgreSQL是經由CTE:
WITH zzz(zname) AS (
VALUES ('three'),('four'), ('five')
)
SELECT * FROM zzz
WHERE zzz.zname NOT IN (select zname FROM usr)
;
生成一些數據:
SET search_path='tmp';
DROP TABLE usr;
CREATE TABLE usr
(id INTEGER NOT NULL
, zname varchar
);
INSERT INTO usr(id,zname) VALUES
(1, 'one'),(2, 'two')
,(3, 'three'),(4, 'four')
;
結果:
SET
DROP TABLE
CREATE TABLE
INSERT 0 4
zname
-------
five
(1 row)
RDBMS什麼您使用的是:
這應該與任何RDBMS(我認爲)工作? – 2012-02-04 18:44:36