[SQL ] 同個group取出前兩筆資料

看板Database (資料庫)作者 (Game)時間8年前 (2016/12/06 00:33), 編輯推噓1(109)
留言10則, 2人參與, 最新討論串1/2 (看更多)
資料庫名稱: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://www.ptt.cc/bbs/Database/M.1480955581.A.A31.html

12/06 08:50, , 1F
把group欄位distinct丟到暫存,設定變數去接總共幾種
12/06 08:50, 1F

12/06 08:50, , 2F
group,再用WHILE迴圈看是要組字串(UNION語法)或是塞到
12/06 08:50, 2F

12/06 08:50, , 3F
新的暫存表
12/06 08:50, 3F

12/06 09:25, , 4F
如果需要寫法再跟我說吧.....
12/06 09:25, 4F

12/06 11:26, , 5F
select * from @table a where Memo IN
12/06 11:26, 5F

12/06 11:27, , 6F
( SELECT TOP 1 Memo from @table where ID = a.ID)
12/06 11:27, 6F

12/06 11:27, , 7F
把上面那行的TOP 1 改成 TOP N就可以達到你要的
12/06 11:27, 7F

12/06 11:44, , 8F
對耶樓上的寫法是選每種group的前兩筆....
12/06 11:44, 8F

12/06 11:45, , 9F
語法試了一下 欄位對應 Memo=pkey, ID = 123/456/.....
12/06 11:45, 9F

12/06 11:46, , 10F
感謝傳說C~~Orz 我也撞牆了剛才
12/06 11:46, 10F
文章代碼(AID): #1OHPQzen (Database)
文章代碼(AID): #1OHPQzen (Database)