我限制数据是这样的
产品表
有平台id 产品名称
id ptid name
1 100 产品1
2 100 产品2
3 100 产品3
4 100 产品4
5 100 产品5
6 100 产品6
7 101 产品7
8 101 产品8
9 101 产品9
10 101 产品10
11 101 产品11
如何根据某个平台id 只取这个平台的3条数据(顺序可以随机)
id ptid name
1 100 产品1
2 100 产品2
3 100 产品3
7 101 产品7
8 101 产品8
9 101 产品9
SELECT id, ptid, name
FROM (
SELECT id, ptid, name,
(
SELECT COUNT(*)
FROM Table1
WHERE ptid = t1.ptid
AND id <= t1.id
) AS rn
FROM Table1 t1
) t
WHERE rn <= 3
select top 3 * from table
根据ptid相同进行判断,和id无关
select * from (
select a.*,
case when @oldptid=ptid then @lagfield:=@lagfield+1 else @lagfield:=1 end rn,
@oldptid:=ptid
from 你的表名 a,(select @lagfield:=0,@oldptid:='') r
) a where rn<=3
这个肯定要用limit,
select * from table where id=num limit 3;