Database 在mysql中选择上一行和下一行-如何选择?
如果当前行没有任何数字标识符,我不知道如何选择上一行/下一行 对于数值,我始终使用2个查询: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
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;