Mysql 1064-内部查询的SQL语法有错误
我想为每一行显示比当前学生年龄大的学生的名单、姓名和人数。但我得到了这个错误Mysql 1064-内部查询的SQL语法有错误,mysql,sql,select,Mysql,Sql,Select,我想为每一行显示比当前学生年龄大的学生的名单、姓名和人数。但我得到了这个错误 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
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类似
不能在计数聚合函数中使用这样的相关选择子查询 看起来你要做的是为每个学生统计每个学生中有多少学生年龄较大。如果没有大一点的学生,请使用左连接,然后计数sd2。滚动以仅计数从sd2中拉出来的年轻学生
不能在这样的计数函数中使用查询。但您可以使用相关子查询
SELECT sd1.Roll, sd1.Name, (SELECT COUNT(*)
FROM student_details sd2
WHERE sd2.Age > sd1.Age)
FROM student_details sd1
LIMIT 0, 25
您想做什么?在文档或其他地方您发现计数可以与子查询一起用作参数。感谢PM 77-1的关注。我没有在任何文档中找到它,我只是猜测并尝试使用它,我的错。现在我知道怎么了。
SELECT sd1.Roll, sd1.Name, (SELECT COUNT(*)
FROM student_details sd2
WHERE sd2.Age > sd1.Age)
FROM student_details sd1
LIMIT 0, 25