Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在mysql中选择上一行和下一行-如何选择?_Database_Mysql - Fatal编程技术网

Database 在mysql中选择上一行和下一行-如何选择?

Database 在mysql中选择上一行和下一行-如何选择?,database,mysql,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 `c

如果当前行没有任何数字标识符,我不知道如何选择上一行/下一行

对于数值,我始终使用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;

假设我当前客户的名字是“Cc”。我希望能够从数据库中选择“Bb”和“Dd”。怎么做?:)

行没有顺序,mysql按照它想要的顺序存储行。它被称为集群。您可以使用LIMIT获取结果集的子集。限制10表示第1行到第10行。限制11,20表示第11到20行,依此类推。第1行对应于结果集中该行的顺序,因为表中的行更像一个“云”,所以在使用ORDERBY子句构建结果集之前,没有顺序。

我会选择上一个带有

  SELECT MAX(customer_name) 
    FROM customers 
   WHERE `customer_name` < 'Cc' 
  LIMIT 1;
  SELECT MIN(customer_name) 
    FROM customers 
   WHERE `customer_name` > 'Cc' 
   LIMIT 1;
我想你就快到了


编辑:按照榴弹上校的建议,删除了多余的ORDER BY语句。

我认为ORDER BY在这里是不必要的。你说得很对,榴弹上校。复制先生和粘贴先生再次罢工。谢谢。使其工作,但仍然必须保留顺序(我实际的SQL查询有不同的字段,因此在这种情况下是必要的)。与数字标识符相同,我认为您需要的是前导和滞后分析函数,MySQL不支持这些函数。但您可以阅读本文了解如何模拟该功能:
  SELECT MIN(customer_name) 
    FROM customers 
   WHERE `customer_name` > 'Cc' 
   LIMIT 1;