Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取列中的第一条和/或最后一条记录_Sql - Fatal编程技术网

Sql 获取列中的第一条和/或最后一条记录

Sql 获取列中的第一条和/或最后一条记录,sql,Sql,以下SQL语句从最高效率到最低效率的顺序是什么 注意:让语法与语言无关,即在适当的位置使用TOP 1,而不是LIMIT 1。假设table_name是表的名称,column_name是列的名称,id是带有主键的列的名称,并且该表有成千上万条记录 从表名称中选择第一列名称 从表\u name LIMIT 1中选择列\u name 从id=1的表\u name中选择列\u name-假设第一个id为1 从表名称中选择列名称,其中id=从表名称中选择MINid 及 从表\u name中选择LASTco

以下SQL语句从最高效率到最低效率的顺序是什么

注意:让语法与语言无关,即在适当的位置使用TOP 1,而不是LIMIT 1。假设table_name是表的名称,column_name是列的名称,id是带有主键的列的名称,并且该表有成千上万条记录

从表名称中选择第一列名称 从表\u name LIMIT 1中选择列\u name 从id=1的表\u name中选择列\u name-假设第一个id为1 从表名称中选择列名称,其中id=从表名称中选择MINid 及

从表\u name中选择LASTcolumn\u name 按id DESC LIMIT 1从表名称顺序中选择列名称 从表\u name中选择列\u name,其中id=从表\u name中选择COUNTid-假定未跳过任何值 从表名称中选择列名称,其中id=从表名称中选择最大id
我不知道如何对这些语句进行基准测试,但我的猜测是2,3,1,4获得第一条记录,3,2,1,4获得最后一条记录;第一个和最后一个是分组操作。查询引擎要获得结果,首先需要收集数据

其他人只需要返回找到的第一行。
如果“id”上有索引,则按降序排序并不十分昂贵。

Hmm。我没有想到这个。我使用MySQL,但直到现在我还没有检查第一个是否存在。然而,我的好奇心现在已经达到顶峰,所以我想任何支持FIRST和/或LAST函数以及LIMIT操作符的函数都足够了。@marc_s:SQLite和PostgreSQL也使用LIMIT,不过我不熟悉FIRST和LAST。缺少指定的数据库让我想到了MySQL或SQL Server,但如果SQL Server使用TOP而不是LIMIT,那么MySQL将是一个合理的猜测。@muistooshort:谢谢你的提醒-是的,SQL Server使用TOP子句not LIMITSFIRST和last是2012版SQL Server中推出的两个新分析函数,没有“where”或“order by”。在执行TOP 1或limit 1时,您不能保证获得id最低的行。这正是我所倾向的,但我对实现的了解还不够多,无法这么说。我继续说并接受了它,因为它回答了我的问题,但请随意看看我的大量编辑,以供思考。