SQL Select Query 中 Top 1 1 和 Select 1 之间的差异
Posted
技术标签:
【中文标题】SQL Select Query 中 Top 1 1 和 Select 1 之间的差异【英文标题】:Diff between Top 1 1 and Select 1 in SQL Select Query 【发布时间】:2013-10-14 11:55:40 【问题描述】:我对 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 查询中 select "TOP 1 1" 和 "SELECT 1" 的区别是什么?
【问题讨论】:
【参考方案1】:SELECT TOP 1
表示选择结果集中的第一条记录
SELECT 1
表示返回1作为结果集
SELECT TOP 1 1 FROM [SomeTable] WHERE <SomeCondition>
表示如果条件为真并且选择返回任何行,则只返回顶部1
行并且只返回该行的整数1
(没有数据,只返回整数1)。
【讨论】:
SELECT TOP 1 正在选择查询结果集中的第 1 行,Other 1 将返回 1 用于管理器表中没有相应记录的任何记录 所以基本上这是 IIF EXISTS 的旧解决方法? @Creative 不是真的,它实际上与存在运算符一起使用。想不出SELECT 1 FROM Table
的其他用途【参考方案2】:
在下文中,作为“TOP 1”一部分的第一个“1”表示在获得单个结果后停止。第二个“1”只是因为作者真的不在乎结果是什么。
SELECT TOP 1 1 FROM WORKER
本质上是一样的
SELECT TOP 1 * FROM WORKER
唯一的问题是在查询的“EXISTS”部分是否比仅仅在查询中更有效
SELECT 1 FROM Manager...
【讨论】:
【参考方案3】:该请求查找是否至少有一名工人(前 1 名)没有经理。 SELECT 1 子句充当“返回真”。
如果有经理,则请求select 1 from Manager M where M.Id = W.Id
返回1。如果没有经理,则请求返回NULL。
【讨论】:
【参考方案4】:SELECT TOP 1 1
将准确选择 0 或 1 1
s。 SELECT 1
将选择 1
恰好 N 行,其中 N 是符合您的条件的行数。
在您的情况下,它正在寻找没有经理的 first (TOP 1
) 工人。然而,由于它是SELECT TOP 1 1
,它所做的只是寻找一个没有经理的工人的存在。
【讨论】:
【参考方案5】:它像真假一样工作...... 例如 从 ItemId=4526000 的 Items 中选择 top 1 1 它将返回 1,因为 where 条件匹配。 如果它不匹配 then ,则不会返回任何内容。 => 认为 从 ItemId=4526000 的 Items 中选择 top 10 1 如果 ItemId 重复 5 次,它将返回 1 5 次。
【讨论】:
以上是关于SQL Select Query 中 Top 1 1 和 Select 1 之间的差异的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 查询:SELECT 1 WHERE EXISTS vs SELECT TOP 1 1
“取出数据表中第10条到第20条记录”的sql语句+select top 使用方法