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 1s。 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:MAX 与 SELECT TOP 1

SQL Server 查询:SELECT 1 WHERE EXISTS vs SELECT TOP 1 1

PDO 语句错误 #1064

“取出数据表中第10条到第20条记录”的sql语句+select top 使用方法

SQL UPDATE TOP () 或 UPDATE 与 SELECT TOP

[9]SQL SELECT TOP, LIMIT, ROWNUM