PostgreSQL数据库与平台模型映射时SELECT语句出现near "SELECT"语法错误
问题根因
你的SQL写法不符合PostgreSQL的语法规范,本质是将两条独立的SELECT语句用逻辑运算符or直接拼接,语法解析时读到第二个SELECT就会触发报错,你收到的报错提示的「Position: 8」正好对应第二个SELECT的起始位置。
不同场景的正确写法
场景1:仅从A表查询attribute字段
- 如果建表时没有特意用双引号指定表、字段的大小写(PostgreSQL默认会把未加双引号的名称统一转成小写存储),直接用以下写法即可:
SELECT attribute FROM A;
- 如果建表时强制了表名、字段名的大小写(建表语句中名称用双引号包裹),需要保留双引号写法避免标识符找不到的报错:
SELECT "A"."attribute" FROM "A";
场景2:需要做逻辑判断筛选数据
如果是要加or逻辑筛选符合条件的结果,把判断逻辑放到WHERE子句中:
-- 示例:筛选attribute等于1或者等于2的数据 SELECT attribute FROM A WHERE attribute = 1 OR attribute = 2;
场景3:需要合并两个查询的结果
如果确实需要拼接两条SELECT的返回结果,用UNION(去重)或者UNION ALL(不去重,性能更高)实现,要求两条查询返回的字段数量、字段类型完全匹配:
SELECT attribute FROM A UNION ALL SELECT attribute FROM B;
内容的提问来源于stack exchange,提问作者DrT
相关产品推荐
相关产品推荐

