所以假设我有这个问题:
SELECT * FROM t WHERE j = k ORDER BY l
有没有办法让查询只返回,例如根据ORDER BY语句返回第20到第40条记录,而不是返回ORDER BY语句排序的所有行?
答案 0 :(得分:2)
SELECT * FROM t WHERE j = k ORDER BY l LIMIT 20, 20
限制20(第二个),从偏移量20开始,第一个。
答案 1 :(得分:1)
SELECT * FROM t WHERE j = k ORDER BY l LIMIT 20 OFFSET 20;
limit表示你只需要20行,而offset表示你不需要前20行。
请记住,当偏移值非常大时,您的查询将非常慢,因为sql server需要扫描第一行<offset>
行以返回<offset>+<limit>
行。< / p>
答案 2 :(得分:1)
您是否在the documentation进行了搜索?
LIMIT
子句可用于约束返回的行数 通过SELECT
声明。LIMIT
需要一个或两个数字参数, 必须都是非负整数常量(使用时除外) 准备好的陈述)。使用两个参数,第一个参数指定的偏移量 第一行返回,第二行指定最大数量 要返回的行。初始行的偏移量为0(不是1)。
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
为了与PostgreSQL兼容,MySQL还支持
LIMIT
row_count
OFFSET
offset
语法。
答案 3 :(得分:1)
SELECT * FROM t WHERE j = k ORDER BY l LIMIT 19,21
注意:
答案 4 :(得分:0)
http://dev.mysql.com/doc/refman/5.0/en/select.html
sample: SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
所以
SELECT * FROM t WHERE j = k ORDER BY l LIMIT 20,20; #retrieve rows 20-40
答案 5 :(得分:0)
有解决方案: SELECT * FROM t WHERE j = k ORDER BY l limit 21,20; (21是行数,20是起始行,因此如果它们存在,您将检索从20到40的行)