先来个开心的图片大家放松下哈。
老外,放开那头驴。。。
在《SQL语法顺序与执行顺序》中的时候有朋友提到过limit。小编整理了下limit的含义、用法、注意事项向大家展示下limit在SQL中的方方面面。
limit含义:
limit英语中的含义是限制,限定的意思。小日本曾上映过一个电影就是叫limit是由漫画改编的电影,剧情很变态,但不可否认小日本由于地狭人稠的原因,在观念上的资源危机意识还是很强的哈。额,话题扯远了,咱们继续聊咱们的sql。
limit在SQL中的用法:
首先limit是属于mysql的语法,用来从某个值开始,取出之后的N条数据的语法。
limit有两种方式。
1)limit a,b 后缀两个参数的时候(/*参数必须是一个整数常量*/),其中a是指记录开始的偏移量,b是指从第a+1条开始,取b条记录。
2)limit b 后缀一个参数的时候,是直接取值到第多少位,类似于:limit 0,b 。
实例:
select * from persons limit 0 , 4; 解释:起点位置为0,开始查询,返回4条数据
select * from persons limit 4 , 4;解释:起点为4 ,开始查询,返回4天数据。
注意事项:
*1) limit 是不支持SQL server的,当然用TOP也凑合着用。小编发个简单的例子大家理解下,
MYSQL中的
select id from table limit 4,4
类似于 SQL server 中的
select top 4 id from table
where id not in (select top 4 id from table )
(例子举得比较粗糙但得出的结果一样,希望大家理解哈)
*2) limit 所后缀的参数必须是整数常量。
*3) 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。
*4) 百度上说:(为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:) 但小编测试的时候试了试发现limit不能有负数,-1更不行,有兴趣的朋友们可以自己手动测试下哈。
*5) 从语句的执行顺序上讲,select 是先执行order by 进行排序,后再limit来返回记录数的。