我对sql有一个普遍的疑问。“Top 1 1”究竟会做什么?以下查询的含义是什么?
select top 1 1 from Worker W where not exists (select 1 from Manager M where M.Id = W.Id)
在 sql server 查询中选择“TOP 1 1”和“SELECT 1”有什么区别?
我对sql有一个普遍的疑问。“Top 1 1”究竟会做什么?以下查询的含义是什么?
select top 1 1 from Worker W where not exists (select 1 from Manager M where M.Id = W.Id)
在 sql server 查询中选择“TOP 1 1”和“SELECT 1”有什么区别?
SELECT TOP 1
意味着选择结果集中的第一条记录
SELECT 1
表示返回 1 作为结果集
SELECT TOP 1 1 FROM [SomeTable] WHERE <SomeCondition>
表示如果条件为真并且从选择返回任何行,则仅返回顶1
行并且仅返回1
该行的整数(没有数据,仅返回整数 1)。
在下文中,作为“TOP 1”一部分的第一个“1”表示在获得单个结果后停止。第二个“1”只是因为作者真的不在乎结果是什么。
SELECT TOP 1 1 FROM WORKER
本质上是一样的
SELECT TOP 1 * FROM WORKER
唯一的问题是它在查询的“EXISTS”部分是否比仅仅更有效
SELECT 1 FROM Manager...
该请求确定是否有至少一名工人(前 1 名)没有经理。SELECT 1 子句充当“返回真”。
如果有管理器,则请求select 1 from Manager M where M.Id = W.Id
返回 1。如果没有管理器,则请求返回 NULL。
SELECT TOP 1 1
将精确选择 0 或 1 1
秒。 SELECT 1
将1
精确选择 N 行,其中 N 是符合您的条件的行数。
在您的情况下,它正在寻找第一个( TOP 1
) 没有经理的工人。但是,既然它是SELECT TOP 1 1
,它所做的就是寻找一个没有经理的工人的存在。
它的工作方式类似于 true false ... 例如,从 ItemId=4526000 的 Items 中选择 top 1 1 它将返回 1,因为 where 条件匹配。如果它不匹配 then ,则不会返回任何内容。=> 假设从 ItemId=4526000 的 Items 中选择 top 10 1 如果 ItemId 重复 5 次,它将返回 1 5 次。