Mysql 具有内部联接的公共表表达式
我正在努力学习MySQL中CTE背后的直觉。我真正想了解的是如何创建嵌套查询。例如,我试着运行这段代码,结果发现一个语法错误-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
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。使用更新的版本。