SQLite syntax for "ALL"



有没有办法在 sqlite

中进行以下操作
select name
from   table
where  number >= ALL (<subquery, "such as select x from table ...">)

具体来说,无论我如何格式化查询,我都会在ALL操作员之后遇到语法错误。在我搜索解决方案的谷歌搜索中,我发现ALL的语法在sqlite中有所不同,但我似乎无法弄清楚。

有人可以向我展示基本的ALL (<subquery>)语句如何在SQLITE中起作用吗?或让我知道他们是否根本不起作用?

我怀疑sqlite中有一个all()操作员。但是,您可以使用Max()和Min()。

编写功能等效的内容
SELECT name 
FROM table 
WHERE number >= (SELECT MAX(another_number) FROM another_table WHERE ...)

sqlite确实有一个全关键字。但是,它没有做您想要的。(幸运的是, @Lawrence的答案确实如此。)

虽然不允许所有关键字作为Where表达的一部分,但关键字可以出现其他几个位置。

来自http://www.sqlite.org/lang_select.html:

选择全 * ...

全部或不同的关键字之一可以遵循简单选择语句中的选择关键字。如果简单的选择是选择全部,则将由SELECT返回整个结果行。如果不存在或不同的情况,则行为似乎是指定的。

选择...联合全部选择...

使用Union创建的化合物SELECT所有操作员都将所有行返回联合所有操作员左侧的所有行,以及从选择到右侧的所有行。工会运营商的工作方式与联合所有人相同,但从最终结果集中删除了重复行。

sqlite没有所有操作员。您可能很想写这样的东西:

select ... where number >= (select max(...) from ...);

但是,这是不是在所有情况下等同于原始查询。如果子查询没有结果,则number大于所有结果(真实的真实)。但是零数字的最大值为null, number >= NULL是false(或者,三元逻辑中的未知,最终被视为false)。

以下查询等效于使用所有查询,包括用于空的结果情况:

select ... where not exists (select * from ... where number < X);

最新更新