开发者社区> 问答> 正文

1.1.7 sql 复杂后,MySqlSchemaStatVisitor 的orderByColum

sql语句如下:select coach_id, tournament_name ,tournament_id, season_id, season, count(1) as num, sum(case when wdl = 0 then 1 else 0 end) as loss, sum(case when wdl = 1 then 1 else 0 end) as draw, sum(case when wdl = 3 then 1 else 0 end) as win from ( select a.coach_id,b.team_id, a.home_team_id, a.away_team_id,a.tournament_id, a.tournament_name, a.season_id,a.season, a.result, case when b.team_id = a.home_team_id then (case WHEN CONVERT(SUBSTRING(a.result, 1, LOCATE(':',a.result)-1), SIGNED) > CONVERT(SUBSTRING(a.result, LOCATE(':',a.result)+1, CHAR_LENGTH(a.result)), SIGNED) THEN 3 WHEN CONVERT(SUBSTRING(a.result, 1, LOCATE(':',a.result)-1), SIGNED) < CONVERT(SUBSTRING(a.result, LOCATE(':',a.result)+1, CHAR_LENGTH(a.result)), SIGNED) THEN 0 else 1 end ) when b.team_id = a.away_team_id then (case WHEN CONVERT(SUBSTRING(a.result, 1, LOCATE(':',a.result)-1), SIGNED) > CONVERT(SUBSTRING(a.result, LOCATE(':',a.result)+1, CHAR_LENGTH(a.result)), SIGNED) THEN 0 WHEN CONVERT(SUBSTRING(a.result, 1, LOCATE(':',a.result)-1), SIGNED) < CONVERT(SUBSTRING(a.result, LOCATE(':',a.result)+1, CHAR_LENGTH(a.result)), SIGNED) THEN 3 else 1 end ) end as wdl from p_coach_match_detail as a left join p_coach_career b on a.match_date > b.appoint_time and a.match_date < b.until_time and a.coach_id = b.coach_id and b.function = 'Manager' ) a where season_id >= 2017 and coach_id = 5075 group by coach_id, tournament_name ,tournament_id, season_id, season ORDER BY season_id DESC

原提问者GitHub用户zhuenjun

展开
收起
山海行 2023-07-05 22:10:22 86 0
4 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    对于您的SQL语句,MySqlSchemaStatVisitor的orderByColumns属性会返回一个List对象,其中包含按照哪些列来排序的信息。在您的SQL语句中,ORDER BY子句是按照season_id列进行降序排序。

    2023-07-29 22:52:08
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    你提供的SQL查询语句非常复杂,包含了多个子查询和聚合操作。根据你的描述,你遇到了一个问题,即在执行该查询时可能出现了MySqlSchemaStatVisitor的orderByColumn错误。

    针对这个问题,有几个可能的解决办法:

    优化查询语句:复杂的查询语句往往容易导致性能下降或出错。你可以尝试优化查询语句,避免多层嵌套子查询,并检查是否可以进一步简化和重构查询逻辑。你可以考虑使用更清晰、更简洁的方式编写查询,以降低错误发生的概率。

    分解查询:如果查询太复杂,检查其中每个子查询的结果是否正确,尝试将复杂查询分解为多个简单查询,以逐步检查和调试。如果在某个特定的子查询中出现了问题,你可以将其分离出来,并单独测试和分析。

    更新MySQL版本:如果你正在使用较旧的MySQL版本,你可以尝试将其升级到最新版本,以获得更好的兼容性和性能。在MySQL的新版本中,可能会修复一些已知的问题和错误。

    联系MySQL支持团队:如果以上方法都无法解决问题,建议你联系MySQL的支持团队,提供具体的错误信息和你的SQL查询语句,以获取更准确的帮助和建议。

    请注意,在分析和优化复杂的SQL查询时,涉及到数据库调优的方方面面,所以根据实际情况和需求可能需要更详细和专业的审查和优化。

    2023-07-07 12:04:13
    赞同 展开评论 打赏
  • 问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14

    原回答者GitHub用户wenshao

    2023-07-06 12:44:27
    赞同 展开评论 打赏
  • 根据您提供的信息中的 SQL 语句,可以看到该语句较为复杂,包含了多表查询、聚合函数和各种条件判断等。同时,在执行查询时还涉及到了 ORDER BY 排序操作,需要对查询结果进行排序。在执行 ORDER BY 操作时,MySqlSchemaStatVisitor 类会将排序涉及的列保存在 orderByColumns 属性中,以便于在后续的查询优化过程中使用。

    对于该语句中的 ORDER BY 子句,可以看到是按 season_id 字段进行倒序排序,即最近的 season_id 排在最前面。因此,在 MySqlSchemaStatVisitor 中,orderByColumns 属性的值应该为 season_id DESC。

    2023-07-06 08:43:58
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载