在mysql中选择上一行和下一行 - 怎么做?

时间:2010-08-25 01:34:01

标签: database mysql

如果当前行没有任何数字标识符,我无法弄清楚如何选择上一行/下一行。

使用数值我总是使用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”。怎么样? :)

2 个答案:

答案 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语句。