我想为每行显示比当前学生年龄大的名册,姓名和人数。但是我收到这个错误
SELECT sd1.Roll, sd1.Name, COUNT(
SELECT Roll
FROM student_details sd2
WHERE sd2.Age > sd1.Age
)
FROM student_details sd1 LIMIT 0, 25
MySQL said: Documentation
#1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MariaDB server version
for the right syntax to use near
'SELECT Roll
FROM student_details sd2
WHERE sd2.Age > sd1.Age
' at line 2
在我的查询中。
SELECT sd1.Roll, sd1.Name, COUNT(
SELECT Roll
FROM student_details sd2
WHERE sd2.Age > sd1.Age
)
FROM student_details sd1;
我的数据库表“ student_details”就像
答案 0 :(得分:1)
您不能在count
聚合函数内使用相关的选择子查询。
您似乎想要为每个学生做的事情是计算每个学生中年龄更大的学生人数。如果没有年龄较大的学生,请使用LEFT JOIN
,count(sd2.Roll)
仅用于计算年龄较小的学生(从sd2
中抽取)。
SELECT sd1.Roll, sd1.Name, count(sd2.Roll)
FROM student_details sd1
LEFT JOIN student_details sd2 on
sd2.Age > sd1.Age
GROUP BY sd1.Roll, sd1.Name
答案 1 :(得分:1)
您不能在count
函数内使用这样的查询。但是您可以使用相关的子查询;
SELECT sd1.Roll, sd1.Name, (SELECT COUNT(*)
FROM student_details sd2
WHERE sd2.Age > sd1.Age)
FROM student_details sd1
LIMIT 0, 25