Sql 将不存在转换为不存在
我想将此查询从Sql 将不存在转换为不存在,sql,oracle,Sql,Oracle,我想将此查询从不在转换为不存在 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 co
不在
转换为不存在
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);
您当前的查询很好
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时需要9分钟。当我删除NOT时需要13秒。只是想看看是否不存在会产生不同的结果:确保
id
已被索引。奇怪的是,这样一个简单的不在
中需要9分钟,但整个表扫描需要13秒。即使id
没有被索引也不能解释这一点。您是否发布了完整的查询,或者是否还有其他内容?解释计划
对不在
中的查询说了什么?@Luke101-您如何测量这两个查询的运行时间?您是否正在查看获取第一行所需的时间?或者获取最后一行所需的时间?id
是主键吗?或者是否存在大量id为1或100的行?带和不带WHERE
子句的查询计划是什么?只是好奇。。。你为什么要这么做?您当前的查询似乎还可以。当我在查询中使用NOT时需要9分钟。当我删除NOT时需要13秒。只是想看看是否不存在会产生不同的结果:确保id
已被索引。奇怪的是,这样一个简单的不在
中需要9分钟,但整个表扫描需要13秒。即使id
没有被索引也不能解释这一点。您是否发布了完整的查询,或者是否还有其他内容?解释计划
对不在
中的查询说了什么?@Luke101-您如何测量这两个查询的运行时间?您是否正在查看获取第一行所需的时间?或者获取最后一行所需的时间?id
是主键吗?或者是否存在大量id为1或100的行?带和不带WHERE
子句的查询计划是什么?这是如何相同的?你忽略了100
,你没有别名col
,所以这不符合甲骨文存在主义?;)哇..我是甲骨文的新手,第一次看到双表。在谷歌上查了一下,我今天学到了一些新东西!我尝试过这个查询,结果没有什么不同。但这很有趣。现在我知道我有很多关于甲骨文的东西要学。这是怎么回事?你忽略了100
,你没有别名col
,所以这不符合甲骨文存在主义?;)哇..我是甲骨文的新手,第一次看到双表。在谷歌上查了一下,我今天学到了一些新东西!我尝试过这个查询,结果没有什么不同。但这很有趣。现在我知道我有很多关于甲骨文的东西要学。