日韩天堂,国产精品久久久久久久久久一区,羞羞羞网站,自拍视频网站,久久亚洲欧美成人精品,桃花阁成人网在线观看

Hello! 歡迎來到小浪云!


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


avatar
小浪云 2024-11-11 188

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

相關閱讀

主站蜘蛛池模板: 亚洲综合日韩精品欧美综合区 | 午夜高清福利 | 亚洲性图视频 | 自偷自偷自亚洲首页精品 | 羞羞视频免费网站入口 | 亚洲第一区在线观看 | 成人欧美一区二区三区黑人3p | 成年香蕉大黄美女美女 | 一级无毛 | 亚洲第一视频在线观看 | 亚洲国产精品午夜电影 | 中文欧美日韩 | 四虎4hu亚洲精品 | 福利视频99| 国产久热香蕉在线观看 | 亚洲69视频 | 永久国产| 中文字幕精品视频在线观看 | 综合久久99| 久久精品大片 | 国产满18av精品免费观看视频 | 中文字幕亚洲欧美 | 婷婷伊人五月 | 五月天丁香婷婷开心激情五月 | 交免费观看在线 | 久热免费在线视频 | 一区二区成人国产精品 | 骚骚影院 | 欧美精品久久 | 激情五月社区 | 五月激情综合丁香色婷婷 | 日韩久久综合 | 中文字幕日韩高清 | 国产精品久久久久免费视频 | 欧美日韩精品一区二区三区不卡 | 中文字幕不卡一区 | 国产做出在线 | 传媒麻豆 | 毛片免费播放无需下载 | 2021国产麻豆剧传媒古装 | 精品视频在线一区 | 亚洲精品在线观看视频 |