我UserScores表的數據是這樣的:如何查詢那些有具有相同價值的一列列中是最高的列值的行
Id userId Score
1 1 10
2 2 5
3 1 5
我想有一個查詢或SQL塊,可以給我下面的輸出
Id userId Score
3 1 5
2 2 5
也就是說,我想挑選是由屬於最高的「ID」列值「用戶ID」唯一行。
我UserScores表的數據是這樣的:如何查詢那些有具有相同價值的一列列中是最高的列值的行
Id userId Score
1 1 10
2 2 5
3 1 5
我想有一個查詢或SQL塊,可以給我下面的輸出
Id userId Score
3 1 5
2 2 5
也就是說,我想挑選是由屬於最高的「ID」列值「用戶ID」唯一行。
另一種解決方案,將在SQL Server上運行2000(同INNER JOIN以上,但稍快)是:
SELECT id, userId, Score
FROM UserScores
WHERE id in (SELECT MAX(id)
FROM UserScores
GROUP BY userId
)
ORDER BY userId
用途:
WITH summary AS (
SELECT t.id,
t.userid,
t.score,
ROW_NUMBER() OVER (PARTITION BY t.userid ORDER BY t.id DESC, t.score DESC) AS rank
FROM USERSCORES sc)
SELECT s.id,
s.userid,
s.score
FROM summary s
WHERE s.rank = 1
如何
SELECT MAX(Id), userId, Score
FROM table
GROUP BY UserId
SELECT U2.id, U2.userId, U2.score
FROM UserScores U2
INNER JOIN (
SELECT U1.userId, MAX(U1.Id) MaxId
FROM UserScores U1
GROUP BY U1.userId
) U3
ON U2.id = U3.MaxId and U2.userId = U3.userId
ORDER BY U2.userId
錯誤 - 「分數」不在聚合中或聚合內。也不保證'id'和'score'值是連接的。 – 2010-08-11 14:44:46