Mysql[5.7] 嵌套 select 查询无法识别父级 table
Mysql[5.7] nested select query couldn't identify the parent table
Mysql 5.7 嵌套 select 查询在
时抛出错误
Unknown column 'CRoute.ID' in 'where clause'
这是我的查询
SELECT CTrip.ID, CRoute.Name,
(SELECT COUNT(StudentID) FROM CRouteStudent WHERE CRoute.ID = CRouteStudent.RouteID) AS ExpectedStudents,
(SELECT COUNT(*) FROM (SELECT COUNT(*) FROM CRouteStudent WHERE CRoute.ID = CRouteStudent.RouteID GROUP BY Stop) as a) AS ExpectedStops
FROM `CTrip`
JOIN `CRoute` ON `CRoute`.`ID` = `CTrip`.`RouteID`
JOIN `CRouteSchedule` ON `CRouteSchedule`.`RouteID`=`CTrip`.`RouteID`
WHERE `CTrip`.`Direction` = '1'
LIMIT 30
ExpectedStudents 正在运行,ExpectedStops 抛出错误
注意此查询在 mysql 8.0
中有效
子查询嵌套很深。
你可以尝试更换
(SELECT COUNT(*) FROM (SELECT COUNT(*) FROM CRouteStudent WHERE CRoute.ID = CRouteStudent.RouteID GROUP BY Stop) as a)
与:
(SELECT count(DISTINCT stop)
FROM croutestudent
WHERE croute.id = croutestudent.routeid)
+
EXISTS (SELECT *
FROM croutestudent
WHERE croute.id = croutestudent.routeid
AND stop IS NULL)
如果 stop
不可为空,您可以保留 + EXISTS ...
部分。
Mysql 5.7 嵌套 select 查询在
时抛出错误Unknown column 'CRoute.ID' in 'where clause'
这是我的查询
SELECT CTrip.ID, CRoute.Name,
(SELECT COUNT(StudentID) FROM CRouteStudent WHERE CRoute.ID = CRouteStudent.RouteID) AS ExpectedStudents,
(SELECT COUNT(*) FROM (SELECT COUNT(*) FROM CRouteStudent WHERE CRoute.ID = CRouteStudent.RouteID GROUP BY Stop) as a) AS ExpectedStops
FROM `CTrip`
JOIN `CRoute` ON `CRoute`.`ID` = `CTrip`.`RouteID`
JOIN `CRouteSchedule` ON `CRouteSchedule`.`RouteID`=`CTrip`.`RouteID`
WHERE `CTrip`.`Direction` = '1'
LIMIT 30
ExpectedStudents 正在运行,ExpectedStops 抛出错误
注意此查询在 mysql 8.0
中有效子查询嵌套很深。
你可以尝试更换
(SELECT COUNT(*) FROM (SELECT COUNT(*) FROM CRouteStudent WHERE CRoute.ID = CRouteStudent.RouteID GROUP BY Stop) as a)
与:
(SELECT count(DISTINCT stop)
FROM croutestudent
WHERE croute.id = croutestudent.routeid)
+
EXISTS (SELECT *
FROM croutestudent
WHERE croute.id = croutestudent.routeid
AND stop IS NULL)
如果 stop
不可为空,您可以保留 + EXISTS ...
部分。