【发布时间】:2012-09-08 18:38:52
【问题描述】:
SELECT commandid
FROM results
WHERE NOT EXISTS (
SELECT *
FROM generate_series(0,119999)
WHERE generate_series = results.commandid
);
我在results 中有一个类型为int 的列,但是各种测试都失败了并且没有添加到表中。我想创建一个查询,返回在results 中找不到的commandid 列表。我认为上面的查询会做我想要的。但是,如果我使用的范围超出了commandid 的预期可能范围(如负数),它甚至都不起作用。
【问题讨论】:
-
如果表中不存在列中的值,则无法返回该值。查询必须从相反的角度编写。
-
PostgreSQL 版本?架构?样本数据?
-
您的查询甚至没有解析。
-
克雷格,你是对的。当我应该只是复制/粘贴它时,我试图从记忆中输入它。
-
@sunnyohno 感谢您的修复。顺便说一句,最好在任何问题中提及您的 Pg 版本,以便人们知道他们是否可以在答案中使用(例如)窗口函数、unnest() 或旧版本中没有的各种其他功能。它有时还可以帮助解释意外行为。
标签: postgresql postgresql-8.4 generate-series