Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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 具有内部联接的公共表表达式_Mysql_Sql_Common Table Expression_Mysql Error 1064 - Fatal编程技术网

Mysql 具有内部联接的公共表表达式

Mysql 具有内部联接的公共表表达式,mysql,sql,common-table-expression,mysql-error-1064,Mysql,Sql,Common Table Expression,Mysql Error 1064,我正在努力学习MySQL中CTE背后的直觉。我真正想了解的是如何创建嵌套查询。例如,我试着运行这段代码,结果发现一个语法错误- WITH cte AS ( SELECT h.hacker_id, s.challenge_id, s.max_score FROM Hackers h INNER JOIN ( SELECT hacker_id, challenge_id, max(score) as max_score FROM Submissions GROUP BY h

我正在努力学习MySQL中CTE背后的直觉。我真正想了解的是如何创建嵌套查询。例如,我试着运行这段代码,结果发现一个语法错误-

WITH cte AS
(
  SELECT h.hacker_id, s.challenge_id, s.max_score FROM Hackers h
  INNER JOIN (
    SELECT hacker_id, challenge_id, max(score) as max_score FROM Submissions 
    GROUP BY hacker_id, challenge_id
  ) s ON h.hacker_id=s.hacker_id
)
SELECT * FROM cte
这个代码有什么问题?我正在使用MySQL。

三种方式

在提交上放置一个表别名,然后在提交查询的所有字段中使用它。 Sumissions上的Max和group by可能导致错误 将Submissions查询放在最后一个查询之前的CTE中,然后在最后一个查询中使用sumissions查询 以CteSubm为例 选择从提交的材料中 , CteJoin as 选择*从h.id=s.id上的hckers h内部连接ctesubm s
选择*from CTEjoin

您的代码看起来很好。您得到了什么错误?第1行的错误1064 42000:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以获取正确的语法,这是hackerrank的一个练习,我正试图使用它来学习sql。还有什么选择版本;回来它必须至少为8.0.1才能支持CTE语法。@Parma。您使用的是不支持CTE的旧版本MySQL。使用更新的版本。