假设我的表包含这样的数据
ID MovieName Rating
--------------------------------------------
1 The Shawshank Redemption 9.20
2 The Godfather: Part II 9.00
3 12 Angry Men 8.90
4 Pulp Fiction 8.90
5 The Good, the Bad and the Ugly 8.80
我想根据最高等级选择前三部电影,其中包含'12愤怒的男人'和'低俗小说'电影。所以查询应该返回4行而不是3行。
答案 0 :(得分:4)
只需使用TOP WITH TIES
即可SELECT TOP 3 WITH TIES ID, MovieName, Rating
FROM MyMoviesDB
ORDER BY Rating DESC
只有你必须使用ORDER BY
答案 1 :(得分:0)
尝试:
SELECT A.ID, A.MOVIENAME, A.RATING
FROM
(SELECT ID, MOVIENAME, RATING, DENSE_RANK() OVER (ORDER BY RATING DESC) AS R
FROM YOUR_TABLE) A
WHERE A.R <= 3
ORDER BY A.RATING DESC;
密集等级将重复相同的评级。因此,如果前三个排名中有一个排名不止一个,那么输出中将会有超过3个排名。
答案 2 :(得分:0)
您可能希望在moviesdb表格中选择评级在DISTINCT排名前3位评级中的排名顺序排序:
SELECT *
FROM moviesdb
WHERE Rating IN (SELECT DISTINCT TOP 3 Rating
FROM moviesdb
ORDER BY Rating Desc)
答案 3 :(得分:-1)
Select * from Table_Name
ORDER BY Rating
LIMIT 4