好的,所以我需要创建一个与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 |
答案 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中,您可以使用offset
和fetch
:
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;