SQL四表关联查询问题:指定字段仅部分显示(数据已存在)
多表关联SQL查询异常排查
表结构说明
- Article表(主键
a_id,字段包含title、au_id、i_id) - Author表(主键
au_id,字段包含name) - Issue表(主键
i_id,字段包含j_id、number) - Journal表(主键
j_id,字段包含title)
问题描述
关联上述4张表后,期望输出文章标题、作者、期刊名称和期号,但查询结果仅能显示作者和期号,文章标题、期刊名称虽存在于数据行中却无法正常展示。
当前使用的SQL代码
const sql = "SELECT a.a_id, a.title, j.title, iss.number, au.name FROM Article AS a INNER JOIN Author AS au ON a.au_id = au.au_id INNER JOIN Issue AS iss ON a.i_id = iss.i_id INNER JOIN Journal AS j ON iss.j_id = j.j_id";
问题原因及解决办法
核心原因:字段重名导致结果覆盖
Article表和Journal表都包含title字段,在查询结果中,这两个字段的键名均为title,多数客户端、ORM框架或数据处理工具会因键名重复自动覆盖其中一个值(通常是后出现的j.title覆盖a.title,或反之),导致其中一个字段无法正常显示。
解决方法:给重名字段添加别名
修改SELECT语句,为两个title字段分别指定唯一别名,避免键名冲突:
const sql = "SELECT a.a_id, a.title AS article_title, j.title AS journal_title, iss.number, au.name FROM Article AS a INNER JOIN Author AS au ON a.au_id = au.au_id INNER JOIN Issue AS iss ON a.i_id = iss.i_id INNER JOIN Journal AS j ON iss.j_id = j.j_id";
执行修改后的查询后,结果中的article_title对应文章标题,journal_title对应期刊名称,即可正常展示所有期望字段。
内容的提问来源于stack exchange,提问作者user20905730
相关产品推荐
相关产品推荐

