📜  SQL 使用 ORDER BY 和 TOP 根据列的值返回前 X 行

📅  最后修改于: 2022-05-13 01:55:20.891000             🧑  作者: Mango

SQL 使用 ORDER BY 和 TOP 根据列的值返回前 X 行

在本文中,我们将学习如何使用 ORDER BY 和 TOP 根据列的值返回前 x 行。我们将使用另一个表来获取最高值并在另一个表中使用该值。

所以首先我们创建一个数据库。

第 1 步:创建数据库

CREATE DATABASE GFG

第 2 步:使用此数据库

USE GFG

第 3 步:创建用于存储最高值的表

我们将创建一个表来存储最高值,以便我们可以使用它从另一个表中获取

CREATE TABLE TopValue(
 val varchar (255)
)

在此表中插入一些最高值数据

INSERT INTO TopValue VALUES(3) 

第 4 步:创建要提取的数据表

现在我们将创建一个要获取其数据并填充虚拟数据的表

CREATE TABLE geeksforgeeks(
    ID INT,
    Name varchar(255)
    Age varchar(5),
    Dept varchar(255)
    ) 

在这个表中插入一些数据,以便我们可以获取这些数据

INSERT INTO [dbo].[geeksforgeeks]
           ([ID]
           ,[Name]
           ,[Age]
           ,[Dept])
     VALUES (1, 'Devesh', 21, 'CSE')
GO

INSERT INTO [dbo].[geeksforgeeks]
           ([ID]
           ,[Name]
           ,[Age]
           ,[Dept])
     VALUES (2, 'Aman', 25, 'IT')
GO

INSERT INTO [dbo].[geeksforgeeks]
           ([ID]
           ,[Name]
           ,[Age]
           ,[Dept])
     VALUES (3, 'Jatin', 25, 'CSE')
GO

INSERT INTO [dbo].[geeksforgeeks]
           ([ID]
           ,[Name]
           ,[Age]
           ,[Dept])
     VALUES (4, 'GFG', 23, 'CSE')
GO

INSERT INTO [dbo].[geeksforgeeks]
           ([ID]
           ,[Name]
           ,[Age]
           ,[Dept])
     VALUES (5, 'Para', 22, 'CSE')
GO

第 5 步:现在根据另一个表值获取顶部数据

DECLARE @TopVal INT;
SET @TopVal = (SELECT val from TopValue)
SELECT TOP (@TopVal) * FROM geeksforgeeks ORDER BY Age DESC

输出:

我们可以看到数据是根据另一个表中的最高值成功获取的,并按年龄降序排列。