SQL Select Query中Top 1 1和Select 1之间的差异

时间:2013-10-14 11:55:40

标签: sql sql-server

我对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”之间的区别是什么?

5 个答案:

答案 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次。