MySQL 常用需求写法 记录一下
生活随笔
收集整理的這篇文章主要介紹了
MySQL 常用需求写法 记录一下
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?1、MySQL 分組查詢文章表各個分類的前N條數據
時間復雜度均為分組中條目數的二次方。而且,很多優化器都不能優化這種查詢,使得它的耗時最好為全表行數的二次方(尤其在沒有設置正確的索引時),而且數據量大時,可能將服務器會停止響應。SELECT A1.* FROM cd_app2_article AS A1 INNER JOIN (SELECT A.cate_id,A.create_time FROM cd_app2_article AS A LEFT JOIN cd_app2_article AS B ON A.create_time = B.create_time AND A.id <= B.id GROUP BY A.cate_id,A.create_time HAVING COUNT(B.id) <= 10 ) AS B1 ON A1.cate_id = B1.cate_id AND A1.create_time = B1.create_time ORDER BY A1.cate_id,A1.create_time DESC//那么還有更好的方法嗎?有沒有辦法可以僅僅掃描一次數據,而不是通過子查詢進行多次掃描 //有,使用 UNION(SELECT * FROM cd_app2_article WHERE cate_id=1 ORDER BY id DESC LIMIT 10) UNION ALL (SELECT * FROM cd_app2_article WHERE cate_id=4 ORDER BY id DESC LIMIT 10) UNION ALL (SELECT * FROM cd_app2_article WHERE cate_id=7 ORDER BY id DESC LIMIT 10)//使用UNION的方式是一個很好的選擇。而當你要獲取數據表中大部分條目時也有一種能達到線性時間的方法,那//就是使用用戶定義變量。太專業了,沒去深究,給出別人的一個學習示例set @num := 0, @type := ''; selecttype, variety, price from( selecttype, variety, price, @num := if(@type =type, @num + 1, 1)as row_number, @type :=type as dummy fromfruits orderby type, price )as x where x.row_number <= 2;2、查詢文章表中各個分類的總數
SELECT cate_id,COUNT(*) FROM cd_app2_article GROUP BY cate_id?
總結
以上是生活随笔為你收集整理的MySQL 常用需求写法 记录一下的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jedate选中日期后关闭弹层_jeDa
- 下一篇: oracle数据库连接 ORA-1263