如何在JOIN查询中获取同一字段的多条记录:信件作者与收件人信息
解决SQL关联同表时列名歧义的问题
你遇到的错误根源是两次关联同一个people表却未做标识,数据库无法区分firstName、lastName属于哪一次关联的表;同时查询结果里重复的列名也会造成混淆。解决步骤如下:
正确SQL语句
SELECT letters.date, letters.type, letters.description, author_p.firstName AS author_firstName, author_p.lastName AS author_lastName, recipient_p.firstName AS recipient_firstName, recipient_p.lastName AS recipient_lastName FROM letters INNER JOIN people AS author_p ON letters.authorId = author_p.ROWID INNER JOIN people AS recipient_p ON letters.recipientId = recipient_p.ROWID
核心修正点
- 给两次关联的
people表分别设置别名(author_p代表作者表,recipient_p代表收件人表),让数据库能区分同一张表的两次关联 - 通过
别名.列名的方式明确指定查询列的来源,彻底消除列名歧义 - 给作者、收件人的名字列设置不同的别名,确保查询结果的列名清晰无重复
- 修正了你原语句中
recipient的拼写错误(应为recipientId)
内容的提问来源于stack exchange,提问作者Ben Alan
相关产品推荐
相关产品推荐

