如何获取SELECT语句中另一ID对应的bGroup?SQL查询问题排查
问题分析与解决方案
问题所在
- WHERE条件逻辑错误:原查询中
WHERE 'Donor BGroup' IN (...)里的'Donor BGroup'是字符串常量,并非字段名。子查询返回的是血型值(如XY、AB等),该字符串永远无法与子查询结果匹配,导致无数据返回。 - 未正确获取捐赠者血型:SELECT列表中的
'Donor BGroup'是固定字符串,没有关联到捐赠者对应的tblPerson记录,无法拿到实际的捐赠者血型。
替代方案
只需额外关联一次tblPerson表(给别名区分管理员对应的记录),直接获取捐赠者的血型即可,无需使用子查询过滤:
SELECT t.adminID, p.firstName, p.lastName, t.transID, t.transDate, t.donationID, p.bGroup AS 'Admin BGroup', b.bankName, d.personID AS 'Donor ID', d_person.bGroup AS 'Donor BGroup' FROM tblTrans t JOIN tblAdmin a ON t.adminID = a.adminID JOIN tblPerson p ON a.personID = p.personID JOIN tblDonation d ON t.donationID = d.donationID JOIN tblBank b ON d.bankID = b.bankID JOIN tblPerson d_person ON d.personID = d_person.personID;
结果说明
执行上述查询后,会得到符合预期的结果,例如第一条记录为:1, John, Doe, 1, 2022-12-31, 1, XY, Bank 1, 3B, OP,完全匹配你的预期输出。
内容的提问来源于stack exchange,提问作者PuppyD13
相关产品推荐
相关产品推荐

