作者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)
1F:推 philgood:我也想过 但是我想减少query的使用 不然用这招的话.... 10/22 01:19
2F:推 philgood:有n个分类 就会要1+n次查询...感觉有点没效率 10/22 01:24
3F:推 PsMonkey:我到觉得捞出来用前端程式判断有几个 type 可能比较快 10/22 08:23
4F:→ rushcat:mysql不是也有StoredProcedure @"@? 10/22 12:31