我经常使用integer = ANY(integer[])
语法,但是现在ANY运算符不起作用。这是我第一次使用它来比较标量和CTE返回的整数,但是我认为这不会引起问题。
我的查询:
WITH bar AS (
SELECT array_agg(b) AS bs
FROM foo
WHERE c < 3
)
SELECT a FROM foo WHERE b = ANY ( SELECT bs FROM bar);
当我运行它时,它引发以下错误:
错误:运算符不存在:integer = integer []:WITH bar AS(SELECT array_agg(b)AS bs FROM foo
WHERE c <3)SELECT a FROM foo WHERE b = ANY(SELECT bs FROM bar)
有关此SQL Fiddle的详细信息。
那我在做什么错?
根据错误消息部分operator does not exist: integer = integer[]
,似乎需要对该bs
列进行unnest
编辑,以便使右侧回到,integer
从而可以找到比较运算符:
WITH bar AS (
SELECT array_agg(b) AS bs
FROM foo
WHERE c < 3
)
SELECT a
FROM foo
WHERE b = ANY ( SELECT unnest(bs) FROM bar);
结果为输出:
A
2
3
给定ANY函数的文档:
右侧是带括号的子查询,该查询必须恰好返回一列。使用给定的运算符,将评估左侧表达式并将其与子查询结果的每一行进行比较,该运算符必须产生布尔结果。如果获得任何真实结果,则ANY的结果为“
true”。如果找不到正确的结果,则结果为“ false”(包括子查询不返回任何行的情况)。
…该错误是有道理的,因为左侧表达式是integer
-列b
-而右侧表达式是integer
s或or的数组integer[]
,因此比较最终以integer
=的形式结束integer[]
,
t具有运算符,因此会导致错误。
unnest
将该integer[]
值设为左手表达式integer
和右手表达式,因此可以继续进行比较。
修改后的SQL Fiddle。
注意: 使用IN
代替时会看到相同的行为= ANY
。
执行简单查询时出现操作符不匹配错误。这是什么原因造成的? 表定义:
我有如下代码: 这是我的请求 我的party模型实体也使用了@id和变量Integer,我的问题是为什么会出现这样的错误?
问题内容: 我正在阅读有关ANY和ALL运算符的oracle文档。除了一件事,我非常了解它们的用途。它指出: 全部 : 如果子查询返回零行,则条件的计算结果为TRUE。 任何 : 如果子查询返回零行,则条件的计算结果为FALSE。 在我看来,这不是很合逻辑。为什么在一个空子查询上的ALL将返回TRUE,而ANY返回FALSE? 我是SQL的新手,所以我认为它会有一个用例来说明这种行为,这对我来说确
问题是我得到错误(过滤器表达式只能包含非主键属性:主键属性:名称)。租户是我的主分区键,名称是我的主排序键。 我需要在dynamo db中编写与此等效的内容:从项目中选择*,其中tenant='testProject',name in('John','Dave')。
主要内容:Oracle ANY运算符简介,Oracle ANY运算符的例子在本教程中,您将学习如何使用Oracle 运算符将值与列表或子查询进行比较。 Oracle ANY运算符简介 Oracle 运算符用于将值与子查询返回的值或结果集列表进行比较。下面举例说明运算符与列表或子查询一起使用时的语法: 在这个语法中: 运算符前面必须有一个运算符,例如:,,,,,。 列表或子查询必须用圆括号包围。 使用运算符将值与列表进行比较时,Oracle将初始条件扩展到列表的所有元素,
问题内容: 如何在基于URI的查询中指定AND操作?我正在寻找类似的东西: 问题答案: 根据文档,它应该按您描述的那样工作。参见http://www.elasticsearch.org/guide/reference/query- dsl/query-string- query.html 也就是说,您还可以使用以下内容: