SQL Server 2012 LIMITing查询

时间:2014-02-27 11:48:46

标签: sql sql-server-2012 limit

好的,所以我需要创建一个与MySQL查询相同的SQL查询

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 |

4 个答案:

答案 0 :(得分:1)

2012年使用新的偏移功能:

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

答案 1 :(得分:1)

我没有使用过MYSQL,所以不确定你的MYSQL查询是否会跳过第1行。请仔细检查一下。

如果您真的想要取出顶级用户ID,可以尝试一下。

SELECT DISTINCT TOP 3 userID 来自画廊 用户ID NOT IN(     SELECT TOP 1用户ID     来自画廊     ORDER BY userID ) ORDER BY userID;

由于

答案 2 :(得分: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;

答案 3 :(得分:0)

SELECT DISTINCT TOP 3 userID 来自画廊 用户ID NOT IN(     SELECT TOP 1用户ID     来自画廊     ORDER BY imageID ) ORDER BY userID;