首页 > 解决方案 > SQL 重叠语句

问题描述

我正在尝试在 SQL 中进行重叠(使用 postgres)但收到语法错误。而且我不知道为什么会出错以及我的 SQL 语句有什么问题

错误文本

[42601] 错误:“[”位置或附近的语法错误:296

SQL 语句

SELECT *,
ARRAY_AGG("reserve"."state_id" ) AS "states" FROM "orders_order"
            JOIN "reserve" ON ("order"."id" = "reserve"."order_id")
GROUP BY "order"."id"

HAVING (NOT (ARRAY_AGG("reserve"."state_id" )&& ['test']::varchar(255)[]))

标签: sqlarrayspostgresql

解决方案


如手册中所述,有两种指定数组的方法:

首先是array关键字:

array['test']

或用花括号括起来的字符串:

'{test}'::text[]

在第二种情况下,可能需要也可能不需要强制转换,具体取决于使用它的上下文。


无需将其转换为varchar(255)[]数组。text[]会做得很好 - 特别是在将它与array_agg()返回的结果进行比较时text[]


推荐阅读