我想从这个not in
查询转换为not exists
转换不是不存在
select id, name, cat from posts where id not in (1, 100)
我怎么变成一个不存在
我想从这个not in
查询转换为not exists
转换不是不存在
select id, name, cat from posts where id not in (1, 100)
我怎么变成一个不存在
SELECT id,
NAME,
cat
FROM posts p
WHERE NOT EXISTS (SELECT 1
FROM (SELECT 1 AS col
FROM dual
UNION
SELECT 100 AS col
FROM dual) a
WHERE p.id = a.col);
您当前的查询是好的,但仍然如果您想使用NOT EXISTS,请尝试此操作。
你并不需要这种转换。如果您使用的是子查询,而不是硬编码的值列表,则not exists
将是合适的。
您当前的查询很好。
只是好奇......你为什么需要这样做?看来你目前的查询没问题。 – everton 2012-03-20 20:59:22
当我使用NOT IN我的查询需要9分钟。当我删除NOT IN需要13秒。只是想看看不存在会有所作为 – Luke101 2012-03-20 21:07:28
另外:确保'id'被索引。 – IAbstract 2012-03-20 21:09:00