7

我已经四处寻找了一段时间,似乎在任何地方都找不到。我想知道如何选择列中的 100 个最高值和 100 个最低值?MIN 函数只选择最低的一个,而 MAX 最高的一个。

有谁知道你是怎么做到的吗?

4

6 回答 6

12

SQL 服务器

  • 前 100 名最高

    SELECT TOP 100 * FROM MyTable
    ORDER BY MyCol DESC
    
  • 前 100 名最低

    SELECT TOP 100 * FROM MyTable
    ORDER BY MyCol ASC
    

MySQL

  • 前 100 名最高

    SELECT * FROM MyTable
    ORDER BY MyCol DESC LIMIT 100
    
  • 前 100 名最低

    SELECT * FROM MyTable
    ORDER BY MyCol ASC  LIMIT 100
    
于 2013-09-05T06:37:52.610 回答
3

你可以这样做,如下所示,

最高

select * from
tablename
order by
column DESC
limit 0,100

最低

select * from
tablename
order by
column ASC
limit 0,100

编辑

对于 SQL Server 替换select * fromselect TOP 100 * from

SELECT TOP子句用于指定要返回的记录数。

于 2013-09-05T06:38:14.207 回答
1

使用升序和降序排序并将输出限制为 100

于 2013-09-05T06:39:09.163 回答
1

如果您使用 Sql 服务器,您可以订购查询 desc 并选择前 1000 个,例如:

select top(1000) * from mytable order by value desc
于 2013-09-05T06:39:23.383 回答
1

试试这个:

DECLARE @V_MaxNo INT; 
SELECT @V_MaxNo = COUNT(1) FROM TABLE_NAME WHERE (CONDITION_PART_AS_REQUIRED); 
SELECT COLUMN_LIST
FROM (SELECT ROW_NUMBER() OVER (ORDER BY [Order_by_column_list_with_ASC/DESC]) rowNo, COLUMN_LIST 
      FROM TABLE_NAME) A 
WHERE (100 - rowNo) >= 0 or (@V_MaxNo - rowNo) < 100
于 2013-09-05T06:51:52.550 回答
0

这是另一种独立于数据库引擎的方法

最大限度

select * from MyTable a where 100 > (select count(id) from MyTable b where a.MyCol <= b.MyCol) order by MyCol desc
于 2013-09-06T07:33:08.217 回答