这个是今天刚发现的,以前都是top 10 这样的用法,今天看到这个用法竟然懵逼了,所以到网站查了一下,
百度上的结果:
这个是SQLSERVER选择表中符合条件的前N行记录的语句。
不过,TOP后边跟的一定是一个数字,你这个1 1,中间空了一个格,不是十一,也不是1,那就分开看,SELECT TOP 1这是一段,选择第一行,第一行什么,第一行的1,就是说如果符合条件,WHERE条件,查询有数据,就会查到一行1,否则,没有结果。
我们常理解的是SELECT * FROM TABLE,这个是选择表TABLE中所有的数据。
那么SELECT 1 FROM TABLE,这个语句也是成立的,只不过根据表中的行数,每一行都是1。
SELECT TOP 1 * FROM TABLE,这个是选TABLE的第一行记录。
SELECT TOP 1 1 FROM TABLE,那就是借用这个TABLE的行,把列换成了固定值,1
对于这个问题来说我们只要看:
那么SELECT 1 FROM TABLE,这个语句也是成立的,只不过根据表中的行数,每一行都是1。
SELECT TOP 1 1 FROM TABLE,那就是借用这个TABLE的行,把列换成了固定值,1
这两个说法;
我们先来看第一个:
似乎明白一点这样查询后的结果了吧,这样查询时把所有其他列和数据全部清除,并赋值 1,再看下面,似乎更明了这个数值的意义。
大胆猜想一下,是否其他字符也可以呢?
是的,可以的,对于更多的大家自己测试,这里我想这种写法是一个快速判断的方法吧,
因为有时候我们只要判断的是这个表是否有数据(可能方法有很多)我们只来说这个,
看示例:
我们捕捉一个大概的时间,
这个两个时间相差可以很明白让你做出选择性,所以在用方法的时候,正确的方法还是很重要的。
如果还是不明白就多看几遍这个:
SELECT TOP 1 1 FROM TABLE,那就是借用这个TABLE的行,把列换成了固定值 1