[英]How can I limit query's results without using LIMIT
我需要在网格上显示有序的20条记录,但是由于生成器(脚本)使用LIMIT来显示每页行数,因此无法使用LIMIT。 这是生成器的错误,但我需要为我的项目解决。 那么可以通过查询显示我的表中的20条有序记录吗?
从评论开始,如果您不能使用限制,那么您可以根据一些顺序对结果进行排名,并在父级选择过滤器中按排名编号限制结果
select * from (
select *
,@r:=@r + 1 as row_num
from your_table_name
cross join (select @r:=0)t
order by some_column asc /* or desc*/
) t1
where row_num <= 20
另一种group_concat()
方法是使用group_concat()
和order by来获取按asc / desc和substring_index
排序的ID列表,以选择所需的ID,就像您需要20条记录,然后使用find_in_set
与同一个表find_in_set
,但是这种解决方案将非常昂贵在性能和group_concat限制方面,如果您需要超过20条记录
select t.*
from your_table_name t
join (
select
substring_index(group_concat(id order by some_column asc),',',20) ids_list
from your_table_name
) t1 on (find_in_set(t.id , t1.ids_list) > 0)
SELECT中的SELECT呢?
SELECT *
FROM (
-- there put your query
-- with LIMIT 20
) q
因此外部SELECT没有LIMIT,您的生成器可以添加自己的。
在脚本格网中,可以使用Limit。 这是一个有效的SQL查询,仅从表中选择前20条记录。 网格设置为每页仅显示10条记录,因此它将显示20条结果,共2页:
SELECT
ProductID,
ProductName
FROM
Products
LIMIT 20
同样,包含的查询也可以很好地工作:
SELECT
ProductID,
ProductName
FROM
(SELECT
ProductID,
ProductName
FROM Products LIMIT 20) tmp
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.