子查询where子句中的id列在两个表中都存在,它使用的id来自错误的表

问题描述 投票:0回答:1

表 tblStudents 列:id、姓名、性别、SchoolName、SchoolId。

表 tblSchool 列:id、名称、位置。

select name,
    (select name
    from tblStudents as a
    where a.SchoolId=id
    limit 1)
from tblSchool;

我希望返回 SchoolName 以及第一个注册的学生。 (这就是为什么我使用限制 1。)

tblStudents 中可能存在多个具有相同 SchoolId 的 tblStudents 记录。

由于 where 子句中的 id 列在两个表中都存在,因此查询中使用的 id 属于 tblStudents,而不是 tblSchool。

我无法在 tblSchool 中使用别名。

mysql stored-procedures subquery mysql-workbench
1个回答
1
投票
SELECT s.name AS SchoolName,
   (SELECT a.name
    FROM tblStudents AS a
    WHERE a.SchoolId = s.id
    LIMIT 1) AS FirstStudentName
    FROM tblSchool AS s;

您不能对 tblSchool 使用别名,但需要确保您的子查询使用来自 tblSchool 的 id,而不是来自 tblStudents 的 id。

© www.soinside.com 2019 - 2024. All rights reserved.