Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 1064-内部查询的SQL语法有错误_Mysql_Sql_Select - Fatal编程技术网

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