SELECT TOP 5 WITH TIES EmpNumber,EmpName
FROM Employee
Order By EmpNumber DESC
Run Code Online (Sandbox Code Playgroud)
以上查询返回五个以上的结果,有什么用"With Ties"关键字SQL查询.
Adr*_*der 53
当您想要返回两个或多个在有限结果集中最后一个位置的行时使用.
注意这个例子
我们有一张桌子,有6个1到4和5个两次.
运行
SELECT TOP 5 WITH TIES *
FROM MyTable
ORDER BY ID;
Run Code Online (Sandbox Code Playgroud)
返回6行,因为最后一行被绑定(存在多次.)
在哪里
SELECT TOP 5 WITH TIES *
FROM MyTable
ORDER BY ID DESC;
Run Code Online (Sandbox Code Playgroud)
仅返回5行,因为最后一行(在本例中为2)仅存在一次.
检查此查询,将更清楚.
SELECT TOP 5 WITH TIES *
FROM MyTable
ORDER BY ID;
Run Code Online (Sandbox Code Playgroud)
结果: - 1 2 3 4 5 5
SELECT TOP 5 *
FROM MyTable
ORDER BY ID;
Run Code Online (Sandbox Code Playgroud)
结果: - 1 2 3 4 5
从这里
使用TOP WITH TIES包含与最后一行中的值匹配的行
如果要使用TOP WITH TIES,则必须使用order by。
创建表
CREATE TABLE [dbo].[Products](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ProductName] [nvarchar](50) NULL,
[Price] [float] NULL)
GO
Run Code Online (Sandbox Code Playgroud)
下面说明了将行插入到现有表中的 INSERT 语句
INSERT INTO [dbo].[Products] VALUES ('Bicycle 1' , 258.2)
INSERT INTO [dbo].[Products] VALUES ('Bicycle 2' , 265.3)
INSERT INTO [dbo].[Products] VALUES ('Bicycle 3' , 267.8)
INSERT INTO [dbo].[Products] VALUES ('Bicycle 4' , 268.9)
INSERT INTO [dbo].[Products] VALUES ('Bicycle 5' , 267.9)
INSERT INTO [dbo].[Products] VALUES ('Bicycle 6' , 267.9)
GO
Run Code Online (Sandbox Code Playgroud)
然后
SELECT TOP 4 WITH TIES
ProductName, Price
FROM Products
ORDER BY Price
Run Code Online (Sandbox Code Playgroud)
在此示例中,两个昂贵的产品的标价为 267.9。因为该语句使用了TOP WITH TIES,所以它又返回了一种与第四种定价相同的产品。
为了更容易理解,让我们用Northwind DB上的一个简单例子来解释。假设您需要相同价格的产品。
select
UnitPrice
,count(UnitPrice) as PriceCount
from Products
group by
UnitPrice
order by 2 desc
Run Code Online (Sandbox Code Playgroud)
]
例如,您现在知道目前有 4 种产品的价格为 10,但您仍然会得到 2 行 - 与您使用top子句发送的结果一样多。
select top 2 UnitPrice,* from Products where UnitPrice=10
Run Code Online (Sandbox Code Playgroud)
]
您必须with ties为所有匹配的行提交带有子句的查询。即使您发送了top 2,您也会获得更多匹配的行。
select top 2 with ties UnitPrice,* from Products where UnitPrice=10 order by 1
Run Code Online (Sandbox Code Playgroud)
]
https://docs.microsoft.com/en-us/sql/t-sql/queries/top-transact-sql?view=sql-server-ver15#arguments
返回与有限结果集中最后一个位置并列的两行或更多行。您必须将此参数与 ORDER BY 子句一起使用。WITH TIES 可能会导致返回的行数多于表达式中指定的值。例如,如果表达式设置为 5,但另外两行与第 5 行中 ORDER BY 列的值匹配,则结果集将包含七行。
您只能在 SELECT 语句中使用 WITH TIES 参数指定 TOP 子句,并且仅当您还指定了 ORDER BY 子句时。绑定记录的返回顺序是任意的。ORDER BY 不影响此规则。
| 归档时间: |
|
| 查看次数: |
37603 次 |
| 最近记录: |