看板 Database 關於我們 聯絡資訊
※ 引述《b60413 (None)》之銘言: : 我想要做一個查詢是分組取前五的動作, : 資料庫的結構大致如下, : id t_type frequency : 1 a 10 : 2 b 15 : 3 c 20 : 4 a 5 : 5 b 1 : 目前的做法我是使用分開查詢的方式去做,然後再自行將結果合併,如下 : SELECT * FROM test WHERE t_type LIKE 'a' ORDER BY frequency DESC LIMIT 5 : SELECT * FROM test WHERE t_type LIKE 'b' ORDER BY frequency DESC LIMIT 5 : SELECT * FROM test WHERE t_type LIKE 'c' ORDER BY frequency DESC LIMIT 5 : 有試著使用GROUP BY的功能去達到精簡, : 不過一直試不出來正確的語法, : 請問有沒有人有更漂亮的寫法可以提供? 請參考這樣的寫法,如此,可以一次處理全部的類別: SELECT * FROM test t WHERE ( SELECT COUNT(*) FROM test WHERE t_type = t.t_type and frequency >= t.frequency ) <= 5 ORDER BY t_type, frequency DESC 像「每組第一」、「各組前 N 筆」這類的題型,下列這篇文章有詳盡的解說: http://ppt.cc/r7FZ 一併提供給您參考。 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.134.191