2014-10-07 63 views
0

我得到的數據得到兩條記錄的每個用戶ID的SQL查詢

1 34 abc5 
1 24 abc3 
1 12 abc2 
1 24 abc1 
1 34 abc6 
1 34 abc76 
1 24 ab1c243 
1 24 abc243 
1 34 abc243 
1 34 abc243 

從我的查詢..有什麼辦法讓輸出這樣

我的查詢

SELECT * FROM table2 
WHERE (abc2 IN (SELECT * FROM table3 AS f INNER JOIN 
table1 AS u ON u.id_usr = f.userLogedin_id 
WHERE  (u.id_usr = '13'))) AND (publish_status = '3') 
ORDER BY guser_ID 

1 34 abc5 
1 34 abc6 
1 24 abc3 
1 24 abc1 
1 12 abc2 

即orderby desc和限制爲每個獨特用戶2 ..在這種情況下,34,24和12是唯一用戶

+1

我們能否看到您的查詢? ) – jbutler483 2014-10-07 10:40:05

+0

添加我的查詢plz chk – 2014-10-07 10:42:14

回答

2

試試這個..

with cte as 
(
select row_number() over (partition by <col2> order by <col2> desc) as id, col1,col2,col3 from <tablename> 
) 
select * from cte where id<=2 
+1

更改您的訂單也由於用戶需要最高col2值的記錄 – Murtaza 2014-10-07 10:43:57

+0

也可以使用這是SQL 2005及更高版本 – Murtaza 2014-10-07 10:44:45

+0

您可以使它更多清楚..使用我的變量。 – 2014-10-07 10:47:07

0
declare @t table (id int,value int,name varchar(10)) 
insert into @t (id,value,name)values (1,34,'abc5') 
insert into @t (id,value,name)values (1,24,'abc3') 
insert into @t (id,value,name)values (1,12,'abc2') 
insert into @t (id,value,name)values (1,24,'abc1') 
insert into @t (id,value,name)values (1,34,'abc6') 
insert into @t (id,value,name)values (1,34,'abc76') 
insert into @t (id,value,name)values (1,24,'ab1c243') 
insert into @t (id,value,name)values (1,24,'abc243') 
insert into @t (id,value,name)values (1,34,'abc243') 
insert into @t (id,value,name)values (1,34,'abc243') 

SELECT t.* 
FROM (
     SELECT DISTINCT value 
     FROM @t 
     ) tt 
CROSS APPLY 
     (
     SELECT TOP 2 * 
     FROM @t t 
     WHERE t.value = tt.value 
     ORDER BY 
       1 DESC 
     ) t