久综合色-久综合网-玖草影视-玖草资源在线-亚洲黄色片子-亚洲黄色片在线观看

Hello! 歡迎來到小浪云!


如何將多條查詢同一表不同分組結果的SQL語句合并成一條語句執行?


avatar
小浪云 2024-11-11 145

如何將多條查詢同一表不同分組結果的SQL語句合并成一條語句執行?

mysql語句合并優化

問題:給定多條查詢同一表不同分組結果的sql語句,能否將其合并成一條sql語句執行?

select *, count(*) as count from t_search where mark = 'a' group by title order by count desc limit 0, 20  select *, count(*) as count from t_search where mark = 'b' group by title order by count desc limit 0, 20  select *, count(*) as count from t_search where mark = 'c' group by title order by count desc limit 0, 20  ...
登錄后復制

總共有24條sql語句,每個查詢的mark字段從a到z,每條語句查詢20條結果。

解答:

方法1:mysql 8.0+

使用with子句和窗口函數:

with ranked_data as (     select *,            count(*) over (partition by title, mark) as count,            row_number() over (partition by mark order by count(*) desc) as row_num     from t_search     where mark between 'a' and 'z'     group by title, mark ) select * from ranked_data where row_num <= 20 order by mark, count desc;
登錄后復制

方法2:mysql 8.0以下

使用變量和子查詢:

SELECT * FROM (     SELECT *,            @rank := IF(@prev_mark = mark, @rank + 1, 1) AS rank,            @prev_mark := mark,            COUNT(*) AS count     FROM t_search     JOIN (SELECT @rank := 0, @prev_mark := '') AS vars     WHERE mark BETWEEN 'a' AND 'z'     GROUP BY title, mark     ORDER BY mark, count DESC ) AS ranked_data WHERE rank <= 20 ORDER BY mark, count DESC;
登錄后復制

相關閱讀

主站蜘蛛池模板: 在线观看91精品国产入口 | 在线观看亚洲欧美 | 91香蕉国产在线观看免费永久 | 美女视频免费看视频网站 | 在线观看一二三区 | 午夜三级毛片 | 在线观看亚洲免费视频 | 免费看成人www的网站软件 | 免费成年人视频网站 | 国产精品一区二区丝瓜 | 欧美在线bdsm调教一区 | 男人扒开腿躁女人j | 久色乳综合思思在线视频 | 在线成人精品国产区免费 | 久久国产中文字幕 | 天堂资源8中文最新版在线 天堂最新版 | 狠狠色丁香久久婷婷综合_中 | 欧美一级成人影院免费的 | 精品在线一区二区 | 国产毛片在线高清视频 | a级国产精品片在线观看 | 日本加勒比一区 | 成人久久久久 | 一区二区三区不卡视频 | 久久性久久性久久久爽 | 日韩成人免费在线视频 | 九九九九视频 | 成人观看视频又黄又免费 | 她也啪97在线视频 | 欧美日韩中文字幕在线视频 | 日韩美女视频一区 | 国产三级一区二区 | 免费观看欧美一级牲片一 | 国产欧美日韩综合精品一区二区三区 | 久久午夜鲁丝片午夜精品 | 亚洲精品不卡午夜精品 | 日韩一区二区三区免费视频 | 久青草免费视频手机在线观看 | 欧美人成人亚洲专区中文字幕 | 亚洲免费观看 | 亚洲欧美在线免费 |