一、问题
上一篇 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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |