我环顾四周,我在网站上找到的唯一问题/答案与MySQL中的ID排序有关。问题包括:stackoverflow.com/questions/645102和stackoverflow.com/questions/169233
我反而希望在按ID以外的其他列排序时查找上一行和下一行。例如:
我首先运行此查询以获取用户列表:
SELECT id, first_name, last_name
FROM user
WHERE last_name LIKE 'm%'
AND active_flag = 1
ORDER BY last_name, first_name
现在,用户点击其中一个结果,然后将其发送到该用户的详细信息页面。在该页面上,我想显示上一个和下一个链接。
我有一个想法是做同样的查询,但限制它为3行,1之前,当前的1和1之后,但后来我意识到我不知道结果列表中的当前用户在哪里
除了选择整个结果集之外的任何其他想法,获取数组的键然后找到上一个和下一个?
我正在使用MySQL和PHP。
答案 0 :(得分:1)
“小于”和“大于”运算符也适用于字符串字段。获取当前记录。然后做:
SELECT id, first_name, last_name
FROM user
WHERE last_name >= $current_lastname
AND first_name > $current_firstname
AND active_flag = 1
ORDER BY last_name, first_name
如果(last_name, first_name)
上有聚簇索引,则此查询应该很快。当然,使用MySQL时无法保证,因此您必须在查询上运行EXPLAIN
以确保。