我对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 query中选择“TOP 1 1”和“SELECT 1”之间的区别是什么?
答案 0 :(得分:17)
SELECT TOP 1
表示选择结果集中的第一条记录
SELECT 1
表示返回1作为结果集
SELECT TOP 1 1 FROM [SomeTable] WHERE <SomeCondition>
表示如果条件为真且从select返回任何行,则只返回行1
行,并且只返回行的整数1
(没有数据只是整数返回1)。
答案 1 :(得分:13)
在下文中,第一个“1”是“TOP 1”的一部分,意味着在获得单个结果后停止。第二个“1”只是因为作者真的不在乎结果是什么。
SELECT TOP 1 1 FROM WORKER
与
基本相同SELECT TOP 1 * FROM WORKER
唯一的问题是它在查询的“EXISTS”部分是否比单纯
更有效率SELECT 1 FROM Manager...
答案 2 :(得分:4)
请求查找是否至少有一个没有经理的工人(前1名)。 SELECT 1子句充当“return true”。
如果有经理,请求select 1 from Manager M where M.Id = W.Id
返回1.如果没有经理,请求返回NULL。
答案 3 :(得分:1)
SELECT TOP 1 1
将精确选择0或1 1
s。 SELECT 1
会精确选择1
N行,其中N是符合条件的行数。
在您的情况下,它正在寻找没有经理的第一个(TOP 1
)工作人员。但是,由于它是SELECT TOP 1 1
,所以它所做的只是寻找没有经理的工人的存在。
答案 4 :(得分:1)
它的工作就像真假一样...... 例如 从ItemId = 4526000的项目中选择前1 1 它将返回1,因为条件匹配。 如果它不匹配那么,什么都不会回来。 =&GT; 假设 从ItemId = 4526000的项目中选择前10 1 如果ItemId重复5次,它将返回1次5次。