我想获取除最大值记录之外的所有记录。你能不能建议查询。
例如,(我将AVG字段用于过滤)
SNO Name AVG
1 AAA 85
2 BBB 90
3 CCC 75
查询只需返回第1和第3条记录。
答案 0 :(得分:5)
使用以下查询:
select * from tab where avg<(select max(avg) from tab);
答案 1 :(得分:3)
您可以使用DENSE_RANK
等排名函数:
WITH CTE AS(
SELECT SNO, Name, AVG,
RN = DENSE_RANK() OVER (ORDER BY AVG DESC)
FROM dbo.TableName
)
SELECT * FROM CTE WHERE RN > 1
(如果您使用的是SQL-Server&gt; = 2005)
答案 2 :(得分:0)
试试这个
SELECT SNO, Name, AVG
FROM TableName
WHERE AVG NOT IN (SELECT MAX(AVG)
FROM TableName )
答案 3 :(得分:0)
select * from Sample where avg not in (select max(avg) from sample);
我认为应该这样做