我试图在SQL Server中的特定列找n个最大的数字。
我们可以找到一列中的最大值,轻松地第2大值。
但我怎么觉得说,一列5个大价值?
我试图在SQL Server中的特定列找n个最大的数字。
我们可以找到一列中的最大值,轻松地第2大值。
但我怎么觉得说,一列5个大价值?
在MySQL中,你可以使用[LIMIT {[offset,] row_count }]
做到这一点,像这样:
...
ORDER BY SomeField DESC
LIMIT @n;
对于SQL Server,你可以使用TOP(n)
来获取前n:
SELECT TOP(@n) SomeFieldName
FROM TABLE
ORDER BY SomeField DESC
例如:
SELECT TOP 5 items_sold
FROM tbl_PRODUCT
ORDER BY items_sold dESC
更新:如果您有其他表families
有一个外键family_ID
到产品表,你想找到与前n个家庭ID的所有产品。 然后,你可以点这一点:
SELECT *
FROM Products WHERE family_ID IN
(
SELECT TOP 5 family_ID
FROM families
ORDER BY family_ID DESC
)
更新2:在每个家庭最顶端的产品:
;WITH cte
AS
(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY family_ID ORDER BY items_sold DESC) row_num
FROM @Products
)
SELECT * FROM cte
where row_num = 1
Order by family_ID
您标记此既为MySQL和SQL服务器。 在SQL Server,你可以使用TOP
:
SELECT TOP 5 yourColumn
FROM yourTable
ORDER BY someColumn DESC;
TOP
限制返回的行数。 要获得最大/最小的值的数据,你会想包括ORDER BY
。
在MySQL中,你将使用LIMIT
另一种方式在SQL Server中做到这一点是使用row_number()
select id
from
(
select id, row_number() over(order by id desc) rn
from yourtable
) x
where rn <= 5
请参阅SQL拨弄演示
SQL服务器
select min(val)
from your_table
where val in (select top 5 val from your_table order by val desc)
MySQL的
select min(val)
from your_table
where val in (select val from your_table order by val desc limit 5)