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

如何从data_1和data_2表中查询名为Adam的Person的年龄?

解决方案

方法1:从Person表出发关联两张数据表格

先定位到Person表中名为Adam的记录,再分别将data_1和data_2与Person表关联(用LEFT JOIN确保不会遗漏仅存在于其中一张表的Adam记录),最后通过DISTINCT避免年龄重复输出:

SELECT DISTINCT p.age
FROM Person p
LEFT JOIN data_1 d1 ON p.name = d1.name
LEFT JOIN data_2 d2 ON p.name = d2.name
WHERE p.name = 'Adam'
AND (d1.name IS NOT NULL OR d2.name IS NOT NULL);

方法2:合并数据表格的记录后关联Person表

先把data_1和data_2中Adam的记录合并(用UNION自动去重),再关联Person表获取年龄,逻辑更直观:

SELECT p.age
FROM Person p
JOIN (
    SELECT name FROM data_1 WHERE name = 'Adam'
    UNION
    SELECT name FROM data_2 WHERE name = 'Adam'
) AS combined_records ON p.name = combined_records.name;

问题原因分析

你之前的连接逻辑错误在于没有将data_2直接关联到Person表,而是错误地关联到了data_1表(比如data_1 JOIN data_2 ON d1.name = d2.name)。这种关联方式只会返回同时存在于data_1和data_2的Adam记录,若Adam仅在其中一张表存在则无法获取数据,还可能因两张表的多条记录产生不必要的笛卡尔积。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:40:58