执行选择后,我收到错误“ where子句中的未知列'points'”
如何从外部查询中删除包含子查询返回的空记录的行? (我需要使用子查询,因为我还有另一堆子查询需要运行以返回我所追求的结果)
SELECT
s.student_name_first,
s.student_name_last,
(
SELECT sum(i.points)
FROM incidents i
WHERE i.student = s.id
) AS points
FROM students s
WHERE points IS NOT NULL
GROUP BY s.id
我也尝试过,结果相同
SELECT
s.student_name_first,
s.student_name_last,
(
SELECT sum(i.points) AS points
FROM incidents i
WHERE i.student = s.id AND points IS NOT NULL
) AS p
FROM students s
GROUP BY s.id
提前致谢
解:
我一直在寻找
SELECT
s.student_name_first,
s.student_name_last,
(
SELECT COALESCE(sum(i.incident_points),0)
FROM incidents i
WHERE i.student = s.id
) as points
FROM students s
GROUP BY s.id
HAVING points > 0
最佳答案
问题是您不能在SELECT
子句中使用WHERE
别名,它们必须位于HAVING
中。
但是,如果使用内部联接,则首先不会获得任何空行。
SELECT s.student_name_first,
s.student_name_last,
SUM(i.points) AS points
FROM students s
JOIN incidents i
ON i.student = s.id
GROUP BY s.id
关于mysql - 当子查询返回null时,删除外部查询中的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17668622/