PostgreSQL执行数组重叠判断SQL报[42601]语法错误如何解决
PostgreSQL数组重叠判断语法错误解决方案
错误原因
- 数组字面量语法不符合PostgreSQL规范
你代码中的['test']::varchar(255)[]写法错误,PostgreSQL不支持直接用方括号开头构造数组字面量,这就是报错syntax error at or near "["的直接原因。正确的数组构造方式有两种:用ARRAY关键字加方括号ARRAY['test'],或者用花括号包裹的字符串形式'{test}'。 - 表别名引用错误
主表声明的是orders_order,但后续JOIN条件、GROUP BY子句中都引用了不存在的表名order,你没有给orders_order设置order别名,运行时也会触发表不存在的报错。
修正后的SQL
SELECT *, ARRAY_AGG("reserve"."state_id") AS "states" FROM "orders_order" AS "order" -- 给主表设置别名为order,匹配后续引用逻辑 JOIN "reserve" ON ("order"."id" = "reserve"."order_id") GROUP BY "order"."id" -- 用ARRAY关键字构造数组,&&为PostgreSQL原生数组重叠判断操作符,逻辑不变 HAVING NOT (ARRAY_AGG("reserve"."state_id") && ARRAY['test']::varchar(255)[])
如果你不想设置表别名,也可以直接把所有"order"."id"替换为"orders_order"."id",效果完全一致。
内容的提问来源于stack exchange,提问作者dmitriy_one
相关产品推荐
相关产品推荐

