日期:2014-05-18  浏览次数:20619 次

关于select top语句的问题
请问下面2条select语句有什么区别:

SQL code


USE AdventureWorks
GO
--语句1
SELECT TOP 1 Name FROM Production.Product WHERE Name='Blade' AND MakeFlag=1
--语句2
SELECT Name FROM Production.Product WHERE Name='Blade' AND MakeFlag=1


这两句结果都是相同,如果写成第一句SELECT TOP 1是效率高,速度快吗??请高手解答。

------解决方案--------------------
1.两句不等效,因为你查询的结果可能只有一条记录,如果有多条记录的话,第一句则只有一条记录,第二句有多条记录.
2.你的top 1 那句没有带order by 子句,没有意义.
3.所以不存在你说的效率问题.因为意义不一样.

------解决方案--------------------
探讨

1.两句不等效,因为你查询的结果可能只有一条记录,如果有多条记录的话,第一句则只有一条记录,第二句有多条记录.
2.你的top 1 那句没有带order by 子句,没有意义.
3.所以不存在你说的效率问题.因为意义不一样.

------解决方案--------------------
top 一般是和order by 一起使用
------解决方案--------------------
两条语句所表达的意义不同,第一条是按序排列取对应字段的第一个值,第二条是取所有符合条件的字段值,结果相同只是因为本身这个表只有一条符合条件的记录。