微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有内部联接的公用表表达式

如何解决具有内部联接的公用表表达式

我正在尝试了解 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 可能导致错误
  • 在最后一个查询之前将提交查询放入 CTE,然后在最终查询中使用提交查询

使用 CteSubm 作为 ( 从提交中选择... ),CteJoin as ( Select * from hckers h inner join ctesubm s on h.id = s.id ) 从 CTEjoin 中选择 *

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。