因此,我正在编写一个应用程序以从数据库中获取记录,而我的客户问我是否可以按区域对数据进行排序。我有以下查询:

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/

10-14 19:15
查看更多