当前位置: 首页 > 知识库问答 >
问题:

如何使此sql查询兼容mysql的旧版本,如V.5.5及以上版本?

龙昊焱
2023-03-14

我有一个查询,它可以在MySQL8.0上运行,但不能在下面的版本上运行,比如MySQL5.5。当我在web服务器上遇到这个错误时,如何使其兼容:#1064-您的SQL语法中有一个错误;查看与您的MySQL服务器版本相对应的手册,以了解第11行“(partition by pid order by Age”附近使用的正确语法

SELECT p.id,  p.pid, p.name, 
       MAX(CASE WHEN t.dr = 1 THEN t.name END) as name1,
       MAX(CASE WHEN t.dr = 1 THEN age END) as age1,
       MAX(CASE WHEN t.dr = 2 THEN t.name END) as name2,
         MAX(CASE WHEN t.dr = 2 THEN t.age END) as age2,
            MAX(CASE WHEN t.dr = 3 THEN t.name END) as name3,
         MAX(CASE WHEN t.dr = 3 THEN t.age END) as age3,
             MAX(CASE WHEN t.dr = 4 THEN t.name END) as name4,
         MAX(CASE WHEN t.dr = 4 THEN t.age END) as age4
FROM Table1 p
join (select id , pid, name, age,  DENSE_RANK() OVER (partition by pid order by age) as dr
from Table2) t on p.pid= t.pid
group by p.id, p.pid, p.name

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=D324E7654218DAE3D1168DF2BF529099

共有2个答案

卜泓
2023-03-14
 select version();
齐成双
2023-03-14

一种方法是替换dense_rank()的相关子查询:

FROM Table1 p JOIN
     (SELECT t2.*,
             (SELECT COUNT(DISTINCT tt2.age)
              FROM table2 tt2
              WHERE tt2.pid = t2.pid AND
                    tt2.age <= t2.age
             ) as dr
      FROM Table2 t2
     ) t 
     ON p.pid = t.pid

这是一个dB<>小提琴。

 类似资料:
  • 本文向大家介绍服务上线怎么兼容旧版本?相关面试题,主要包含被问及服务上线怎么兼容旧版本?时的应答技巧和注意事项,需要的朋友参考一下 可以用版本号(version)过渡,多个不同版本的服务注册到注册中心,版本号不同的服务相互间不引用。这个和服务分组的概念有一点类似。

  • 我用AnyLogic8.7.6创建了一个模型,但我需要在更旧的(专业)版本7.0.2上继续它。我需要旧版本阅读,更重要的是,允许我修改它。谢谢

  • 我正在使用MySQL5.5版本编写SQL查询来进行排序。我的问题是无法正确使用SQL查询下面的列排序。 这是我的数据库链接,显示我的排序错误https://dbfiddle.uk/?rdbms=mysql_5.5&fiddle=bcb32a6b47d0d5b061fd401d0888bdc3 实际上,我想对列模式进行排序,如下所示: 我的错误排序在MySQL5.5的结果,它不能正确排序在表。 错误

  • 问题内容: 除了使用以外,如何检查MySQL查询是否成功 我正在努力实现… 问题答案: 这是手册页中的第一个示例: 如果您想使用其他以外的东西,我建议。

  • 问题内容: 我尝试使用的库具有给定的纬度和经度,并且对表中的条目进行计算后得出的纬度/经度在此范围内。生成的SQL查询适用于MySQL,但不适用于PostgreSQL。 这是我的文件中详细说明错误和完整查询的条目: 知道了什么是SQL之后,我可以编辑生成SQL的PHP​​代码,并将PR发送回库。 问题答案: 该查询使用特定于MySql的语法。在Postgres(以及我所知的所有其他RDBMS)中,

  • 我正在编写一个教会应用程序,其中我正在使用本教程使用可滑动的选项卡 但我希望我的应用程序支持Froyo及以上! AndroidManifest.xml