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

如何编写SQL查询提取单表关联记录?SQLite报错排查

解决SQLite查询问题

错误原因

你写的查询里,第二个SELECT语句引用了T1.Residence_Address_Line_1,但T1是第一个子查询的表别名,两个UNION的子查询是独立执行的,第二个查询无法访问第一个查询的表别名,所以触发了“no such column: T1.Residence_Address_Line_1”的错误。

正确查询写法

要实现“获取所有Smith姓氏的记录,以及和他们同地址的其他人员记录”,可以先找出所有Smith的居住地址,再查询所有住在这些地址的人员。下面是两种可行的写法:

方法1:使用子查询

SELECT Name_Last, Name_First, Residence_Address_Line_1
FROM residents
WHERE Residence_Address_Line_1 IN (
    SELECT Residence_Address_Line_1
    FROM residents
    WHERE Name_Last LIKE 'Smith'
)
ORDER BY Residence_Address_Line_1;

方法2:使用自连接

SELECT DISTINCT r.Name_Last, r.Name_First, r.Residence_Address_Line_1
FROM residents r
JOIN residents s ON r.Residence_Address_Line_1 = s.Residence_Address_Line_1
WHERE s.Name_Last LIKE 'Smith'
ORDER BY r.Residence_Address_Line_1;

这里用DISTINCT是为了避免重复记录(如果同一个地址有多个Smith的话)。

补充说明

  • 两种方法都能先定位到所有Smith的地址,再拉取这些地址下的所有人员,完全覆盖你的需求:既包含Smith本人,也包含同地址的其他姓氏人员。
  • 如果需要精确匹配姓氏,把LIKE 'Smith'换成= 'Smith'会更高效;如果要模糊匹配(比如姓氏包含Smith),可以写成LIKE '%Smith%'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:18:19