我想做THIS的反面。换句话说,我怎么能这样做:
SELECT *
FROM table1
WHERE col1, col2 NOT IN (SELECT col1, col2
FROM table1
WHERE col3 < 4)
请注意NOT
子句。
编辑
我正在编辑问题以解释我想要做的事情。
所以我有下表:
请注意,每次扫描目录时,我都会输入此表中找到的文件(table1)。通过查看表我们知道我第一次扫描目录中的文件A和B.我们第二次扫描目录时我们可以说文件A和B还有一个附加文件C.我们也知道在第二个扫描文件A上进行了修改,因为它具有不同的dateModified。我对上次扫描感兴趣。从查看它我知道我们仍然有文件A,B和C,添加了文件X和修改文件B.这就是我想构建查询的原因
select * from table1
WHERE FileID, DateModified NOT IN
(SELECT Path, DateModified From table1 WHERE DateInserted<4)
希望获取文件X和B,因为这些文件不在DateInserted&lt; 4的所有记录中。很抱歉没有清楚地解释我的自我。
答案 0 :(得分:1)
你不喜欢我在那里的答案,我会在这里发布并添加NOT
:)。
SELECT *
FROM table1 tb1
WHERE NOT EXISTS
(
SELECT *
FROM table1 tb2
WHERE
tb1.col1 = tb2.col1 and
tb1.col2 = tb2.col2 and
tb2.col3 < 4
)
就像我在那里所说的那样,查询是没有意义的,因为它等同于
SELECT *
FROM table1 tb1
WHERE tb2.col3 >= 4
[编辑] 更新基于评论:
SELECT *
FROM tableSource tb1
WHERE NOT EXISTS
(
SELECT *
FROM tableDestination tb2
WHERE
tb1.col1 = tb2.col1 and
tb1.col2 = tb2.col2 and
tb2.col3 < 4
)
答案 1 :(得分:0)
SELECT * from table1 t1, table1 t2
where t1.col3=t2.col3 and t1.COl4=t2.Col4 AND
t1.col1!=t2.col1 and t1.COl2!=t2.Col2 and t1.col3<4
尝试上述查询
答案 2 :(得分:0)
SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t1.col1 = t2.col1 AND t1.col2 = t2.col2 AND t2.col3 < 4
WHERE t2.col1 IS NULL /* col2 or col3 would do as well,
just like any non-nullable column would */