You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL单双引号用法及user与transaction表关联查询问题

PostgreSQL 双表关联查询解决方案

问题根因

  • user 是 PostgreSQL 的内置保留字,直接作为表名查询时会被系统识别为关键字,无法正确匹配表,是查询无结果的常见原因
  • 若建表时使用了驼峰命名的字段(如 partnerUserId),PostgreSQL 默认会将未加双引号的标识符自动转为小写,会出现字段不匹配的问题

PostgreSQL 引号使用规则

  • 单引号 ':仅用于包裹字符串类型的查询值,例如 WHERE name = '测试用户'
  • 双引号 ":用于包裹标识符(表名、字段名),仅当标识符为保留字、包含大小写、包含特殊字符/空格时需要使用,普通全小写无特殊字符的标识符可以省略

正确查询语句

内连接(仅返回两张表完全匹配的记录)

SELECT u.*, t.*
FROM "user" u
INNER JOIN "transaction" t ON u.id = t."partnerUserId";

左连接(保留 user 表全量记录,无匹配交易的字段返回空值)

SELECT u.*, t.*
FROM "user" u
LEFT JOIN "transaction" t ON u.id = t."partnerUserId";

简化规则

如果建表时 transaction 的 partnerUserId 字段实际为全小写命名,可去掉字段的双引号,语句简化为:

SELECT u.*, t.*
FROM "user" u
LEFT JOIN transaction t ON u.id = t.partneruserid;

内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:09:03