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

Postgres查询ChatMessages和ChatUsers表出现重复数据如何解决

问题原因

你当前使用逗号直接拼接两张表的写法没有指定关联条件,实际会执行笛卡尔积运算,返回ChatMessages和ChatUsers所有行的两两组合,因此会出现单条消息对应所有用户邮箱的重复数据。

正确查询语句

推荐使用显式INNER JOIN写法,可读性更高,关联逻辑清晰:

SELECT
  cm."SenderId",
  cu."Email",
  cm."Message"
FROM "ChatMessages" cm
INNER JOIN "ChatUsers" cu
  ON cm."SenderId" = cu."Id";

如果需要沿用你现有隐式连接的写法,补充关联条件即可:

SELECT
  "SenderId",
  "Email",
  "Message"
FROM "ChatMessages", "ChatUsers"
WHERE "ChatMessages"."SenderId" = "ChatUsers"."Id";

上述两种写法都会仅保留SenderId和用户ID匹配的关联行,和你给出的期望返回结果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:00:04