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

SQL中如何基于相同ID关联列?关联查询结果异常求修正

问题解决:关联Person和Points表获取正确结果

问题原因

你当前的查询用逗号连接两个表,会生成笛卡尔积(两个表的所有行两两匹配),再通过CASE仅在Person.id = Points.id时返回name。这种方式会产生大量冗余行,且你未指定id所属的表,数据库解析时的默认匹配逻辑导致大部分行的CASE条件不成立,最终只有少数行能正确显示name。

正确的查询语句

推荐使用标准的INNER JOIN语法基于id关联两个表,这是最清晰且高效的方式:

方式1:INNER JOIN(推荐)

SELECT 
    p.id, 
    pr.name, 
    p.points
FROM 
    Points p
INNER JOIN Person pr ON p.id = pr.id;

这里给表起了别名p(Points)和pr(Person),让语句更简洁易读。

方式2:WHERE子句关联(旧写法)

如果你习惯旧的语法,也可以通过WHERE指定关联条件:

SELECT 
    Person.id, 
    Person.name, 
    Points.points
FROM 
    Person, Points
WHERE 
    Person.id = Points.id;

验证结果

执行上述任一语句后,都会得到你预期的结果:

id name   points
-----------------
1  Jason  8
2  Dave   9
3  Amy    5
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:37:16