因此,我正在编写一个应用程序以从数据库中获取记录,而我的客户问我是否可以按区域对数据进行排序。我有以下查询:
SELECT
*
FROM
customers
WHERE
account_type != 'x'
AND
account_type != 'tor'
ORDER BY
area ASC,
id ASC
LIMIT 30
该查询将返回30行数据,所有数据的区域值均为
1
。我已经设置了一个AJAX查询来获取另外30行,但是当我按区域对数据进行排序时,我无法像下面的示例所示那样将简单的范围字符串适合我的查询:
...
AND
id > 30
...
我将如何编写查询来从数据库中收集接下来的30条记录?
此外,还有一条记录,其区域值为
0
。这不会显示为列表中的第一条记录。为什么是这样?我该如何解决呢?谢谢
最佳答案
首先,将where
条件合并为一个not in
:
SELECT c.*
FROM customers c
WHERE account_type NOT IN ('x', 'tor')
ORDER BY area ASC, id ASC
LIMIT 30;
然后,对于下一组,使用:
SELECT . . .
OFFSET 30
LIMIT 30
假定
id
在表中是唯一的。这很重要,因为这样可以使排序稳定。关于php - MySQL-按整数排序时获取更多记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41806368/