作者hungwei0331 (Game)
看板Database
标题[SQL ] 同个group取出前两笔资料
时间Tue Dec 6 00:32:59 2016
资料库名称:sql server
内容/问题描述:
期望同个group取出前两笔
假设有多笔资料
pkey1 123
pkey2 123
pkey3 123
pkey4 456
pkey5 456
pkey6 456
使用group by 後想要只取出前两笔资料如下
pkey1 123
pkey2 123
pkey4 456
pkey5 456
目前使用过子查询并且将连结中范例改为select top 2
连结如下,
https://goo.gl/DVLvjw
但会有错误讯息提示子查询不可回传多笔资料
还请前辈们开示与提点 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.194.163.203
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1480955581.A.A31.html
1F:推 streetbad: 把group栏位distinct丢到暂存,设定变数去接总共几种 12/06 08:50
2F:→ streetbad: group,再用WHILE回圈看是要组字串(UNION语法)或是塞到 12/06 08:50
3F:→ streetbad: 新的暂存表 12/06 08:50
4F:→ streetbad: 如果需要写法再跟我说吧..... 12/06 09:25
5F:→ LegendC: select * from @table a where Memo IN 12/06 11:26
6F:→ LegendC: ( SELECT TOP 1 Memo from @table where ID = a.ID) 12/06 11:27
7F:→ LegendC: 把上面那行的TOP 1 改成 TOP N就可以达到你要的 12/06 11:27
8F:→ streetbad: 对耶楼上的写法是选每种group的前两笔.... 12/06 11:44
9F:→ streetbad: 语法试了一下 栏位对应 Memo=pkey, ID = 123/456/..... 12/06 11:45
10F:→ streetbad: 感谢传说C~~Orz 我也撞墙了刚才 12/06 11:46