如果当前行没有任何数字标识符,我无法弄清楚如何选择上一行/下一行。
使用数值我总是使用2个查询:
SELECT min(customer_id)
FROM customers
WHERE `customer_id` < 10
GROUP BY customer_status
ORDER BY customer_name ASC
LIMIT 1;
SELECT max(customer_id)
FROM customers
WHERE `customer_id` > 10
GROUP BY customer_status
ORDER BY customer_name DESC
LIMIT 1;
但是,我没有“customer_id”了,只有“customer_name”。当我查询数据库并按此列排序时,我得到:
Ab
Bb
Cc
Dd
Ee
我们假设我当前客户的名字是“抄送”。我希望能够从DB中选择“Bb”和“Dd”。怎么样? :)
答案 0 :(得分:1)
行没有命令,mysql以任何顺序存储行。它叫做聚类。您使用LIMIT来获取结果集的子集。 LIMIT 10表示行1到10. LIMIT 11,20表示行11到20,依此类推。第1行对应于结果集中行的顺序,因为表中的行更像是“云”,所以在使用ORDER BY子句构建结果集之前没有顺序。
答案 1 :(得分:0)
我选择上一个...
SELECT MAX(customer_name)
FROM customers
WHERE `customer_name` < 'Cc'
LIMIT 1;
和下一个......
SELECT MIN(customer_name)
FROM customers
WHERE `customer_name` > 'Cc'
LIMIT 1;
我认为你几乎就在那里。
编辑:删除了Col. Shrapnel建议的多余的ORDER BY语句。