色偷偷91综合久久噜噜-色偷偷成人-色偷偷尼玛图亚洲综合-色偷偷人人澡久久天天-国内精品视频一区-国内精品视频一区二区三区

Hello! 歡迎來到小浪云!


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


avatar
小浪云 2024-11-11 170

如何將多條查詢同一表不同分組結果的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;
登錄后復制

相關閱讀

主站蜘蛛池模板: 亚洲综合激情丁香六月 | 欧美亚洲国产精品久久 | 亚洲国产精品国产自在在线 | 老司机久久精品 | 天天襙| 日本乱人伦片中文三区 | 丰满老女人一级毛片视频 | 亚洲一级黄色片 | 国产欧美在线观看不卡一 | 免费看成人国产一区二区三区 | 日韩欧美一区二区久久黑人 | 天天干天天插天天操 | 精品国产免费人成在线观看 | 久久综合给合久久狠狠狠色97 | 亚洲欧美另类久久久精品能播放的 | 亚洲欧美一区二区三区 | 国产精品青草久久 | 国产亚洲欧美久久久久 | 2021国产三级精品三级在专区 | 国产98在线 | 国产欧美精品一区二区三区 | 四虎精品成人免费永久 | 高清国产美女一级a毛片 | 2021久久伊人精品中文字幕有 | 添人人躁日日躁夜夜躁夜夜揉 | 亚洲伊人久久大香线蕉影院 | 日本精品videossex 黑人 | 日韩欧美在线视频 | 日本免费色视频 | 丰满老女人一级毛片视频 | 国产片一级 | 狠狠色狠色综合曰曰 | 国产伊人自拍 | 四虎免费永久在线播放 | 大桥未久日韩欧美亚洲国产 | 萌白酱香蕉白丝护士服喷浆 | 国产亚洲欧美一区二区 | 亚洲一区二区视频在线观看 | 午夜一级片 | 久久久无码精品亚洲日韩按摩 | 日韩精品视频一区二区三区 |