作者bobju (寶貝豬)
看板Database
標題Re: [SQL ] select-in 與 limit的問題
時間Thu Oct 22 01:17:19 2009
是要找出每個分類當中未有回應的文章, 各抓(最多)3筆當做代表?
第一道SQL:
select distinct type
from article
where fid=0;
撈出type值, 再由host language(例如 PHP)透過迴圈控制, 將每個type
值逐一地代入到第二道SQL:
select *
from article
where type=$type and fid=0
limit 0,3;
拆成兩道, 結構清楚邏輯簡單, 這就能夠達到目的.
以上僅供參考, 應該普遍會這麼用吧? 若要僅用一道SQL就達到目的
的話, 可能要用到mysql流程控制的語法, 就等高手來示範..XD
※ 引述《philgood (感覺好)》之銘言:
: 小弟我用的是mysql 但遲遲沒辦法突破這個query
: 我手上有一個文章的資料表 叫作 article
: id fid type name
: 1 0 1 a
: 2 0 1 b
: 3 0 1 c
: 4 0 1 d
: 5 0 2 e
: 6 0 2 f
: 7 0 2 g
: 8 0 3 h
: 9 0 3 i
: 10 0 3 j
: 11 0 3 k
: 12 1 4 l
: 13 1 4 m
: 基本上,會依照type分群組,
: 那目前可以看到type有1 2 3 4 總共4個分類。
: 那我今天想作一個頁面,他會根據fid取出所有子分類,
: 並取出該分類底下的前3項資料,今天先預設fid為0。
: 所以他取出來的type 應該是1.2.3
: 而id 應該是從1到10
: 我想問說 有沒有辦法根據類別去取出最多3項的資料
: 也就是不要第4筆。
: 我目前只寫到下面這個query而已 就不知道怎麼繼續了...
: SELECT *
: FROM article
: WHERE type IN (select distinct type from article where fid=0)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.115.151.184
※ 編輯: bobju 來自: 58.115.151.184 (10/22 01:19)
推 philgood:我也想過 但是我想減少query的使用 不然用這招的話.... 10/22 01:19
推 philgood:有n個分類 就會要1+n次查詢...感覺有點沒效率 10/22 01:24
推 PsMonkey:我到覺得撈出來用前端程式判斷有幾個 type 可能比較快 10/22 08:23
→ rushcat:mysql不是也有StoredProcedure @"@? 10/22 12:31