我想做与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<4的所有记录中。对不起,我没有解释清楚我的意思。
发布于 2011-06-15 11:19:42
你不喜欢我的答案,我会把它贴在这里,并添加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
EDIT更新基于以下注释:
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
)
发布于 2011-06-15 11:33:38
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
尝试上面的查询
发布于 2011-06-15 16:17:41
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 */
https://stackoverflow.com/questions/6352653
复制相似问题