2014-02-27 205 views
0

好了,所以我需要一個SQL查詢,將執行與此相同MySQL查詢SQL Server 2012的限制查詢

SELECT DISTINCT userID 
FROM gallery 
ORDER BY userID ASC 
LIMIT 0, 3 

SQL查詢,我現在看起來是這樣,但它不會做因爲第二排還是具有userID

SELECT DISTINCT TOP 3 userID 
FROM gallery 
WHERE imageID NOT IN (
    SELECT TOP 1 imageID 
    FROM gallery 
    ORDER BY userID 
) 
ORDER BY userID; 

表同樣的工作,看起來是這樣的

imageID userID albumID 
--------------------------- 
1  user1 2008 
2  user1 2008 
3  user1 2008 
4  user1 Wild Fees 
5  user1 Wild Fees 
6  user1 Wild Fees 
7  user1 Wild Fees 
8  user1 Billfish 15000 
9  user1 Billfish 15000 
10  user1 Billfish 15000 
11  user1 Billfish 15000 
12  user1 2009 
13  user1 2009 
14  user1 2009 
15  user2 New Album Name 001 
16  user2 New Album Name 001 
17  user2 New Album Name 001 
18  user2 New Album Name 001 
19  user2 New Album Name 001 
20  user2 New Album Name 001 
21  user2 New Album Name 001 
22  user2 New Album Name 001 
23  user2 New Album Name 001 
24  user2 New Album Name 001 
25  user2 New Album Name 001 
26  user3 qweee 
27  user3 qweee 
28  user3 qweee 
29  user3 qweee 

===編輯=== 這個特定的SQL的預期輸出

|userID| 
-------- 
|user2 | 
|user3 | 
+0

什麼是您的預期產出? –

+1

@marc_s我補充說,作爲編輯我的問題 –

回答

1

使用新的偏移量的功能在2012:

SELECT DISTINCT userID 
FROM gallery 
ORDER BY userID ASC 
OFFSET 0 ROWS 
FETCH NEXT 3 ROWS ONLY; 
+0

哇...這將很方便知道很久以前...非常感謝,這也簡化了我所有的查爾斯 –

+0

不客氣。只適用於SQL Server 2012起! –

0

試試這個版本:

SELECT TOP 3 userID 
FROM gallery 
GROUP BY userID 
ORDER BY userID ASC ; 

編輯:(基於獲得第2-4行,而不是1 3)

在SQL Server 2012中,你可以使用offsetfetch

SELECT userID 
FROM gallery 
GROUP BY userID 
ORDER BY userID ASC 
OFFSET 1 ROWS FETCH NEXT 3 ROWS ONLY; 
+0

這不會工作,因爲它不會跳過第一個用戶ID –

+1

@ 5tar-Kaster。 。 。 MySQL中的表達式「limit 0,3」需要前三行,而不會跳過任何內容。您可以在https://dev.mysql.com/doc/refman/5.7/en/select.html查看文檔。 –

+0

哦對不起我打算把極限1,3 ... –

0

SELECT DISTINCT TOP 3的userID 從圖庫 其中userid NOT IN( SELECT TOP 1的userID 從圖庫 ORDER BY圖像標識 ) ORDER BY用戶ID;

1

我沒有使用過MYSQL,所以不確定你的MYSQL查詢是否跳過第一行。請重新檢查一下。

如果你真的想拿出最好的用戶名,你可以試試這個。

SELECT DISTINCT TOP 3的userID 從圖庫 其中userid NOT IN(SELECT TOP 1的userID 從圖庫 ORDER BY用戶ID ) ORDER BY用戶ID;

謝謝