请选择 进入手机版 | 继续访问电脑版

【打个补丁】mysql [Err] 1235-This version of MySQL doesn‘t yet s

[复制链接]
科达工艺 发表于 2021-1-2 12:12:58 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、问题
上一篇 mysql 取并列前10,不去重
第二种管理办法SQL查询语句
SELECT b.assign_name,b.introduce_amount
FROM daily_assign_bug b
WHERE b.introduce_amount IN
(
    SELECT introduce_amount
    FROM daily_assign_bug
    GROUP BY introduce_amount
    ORDER BY introduce_amount DESC
    LIMIT 10
)  ORDER BY b.introduce_amount DESC
;
执行时,报错:[Err] 1235-此版本的MySQL尚不支持“ LIMIT&IN / ALL / ANY / SOME子查询”

 
二、管理
从报错可以看出是MYSQL版本不支持,所以第一种管理办法是升级MYSQL版本。
但是,更新mysql版本资本较高,大概会引入更多问题
所以,第二种办法是修改查询SQL,让 limit 不在 in 子查询中
1、联表:将查询前10引入数量查询效果作为一张关联表与原表关联
SELECT b.assign_name,b.introduce_amount 
FROM daily_assign_bug b,
(
        SELECT introduce_amount 
        FROM daily_assign_bug 
        GROUP BY introduce_amount 
        ORDER BY introduce_amount DESC 
        LIMIT 10
) a
WHERE a.introduce_amount=b.introduce_amount
ORDER BY b.introduce_amount DESC;
 
2、嵌套:在 in 子查询中,再嵌套一层查询
SELECT b.assign_name,b.introduce_amount 
FROM daily_assign_bug b 
WHERE b.introduce_amount IN
(
        SELECT introduce_amount 
        FROM 
        (
                SELECT introduce_amount 
                FROM daily_assign_bug 
                GROUP BY introduce_amount 
                ORDER BY introduce_amount DESC 
                LIMIT 10
        ) a
);
 
效果都是一样的

 

来源:https://blog.csdn.net/kk_gods/article/details/111991834
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )