mysql - SQL 主键可以这样吗? (名单上的排名)

标签 mysql sql

当我删除一行并创建一个新行时,主键不会从 1 开始,而是从 2 开始。我想这就是我将其设置为 auto_increment 时的工作方式。但是,每当删除主键上方的行及其下方的所有行时,是否可以更新主键。

如果这是不可能的,我可以创建另一个名为“rank”的列,并根据行的顺序更新它吗?

最佳答案

没有理由关心主键 id 是什么,重要的是它是唯一的。如果这是您的问题,我们使用排序查询和其他东西来担心顺序。

如果您的代码始终要求主键在 1..number_of_rows 范围内且没有间隙,则您的应用程序设计存在问题。

您不应该创建一个名为“rank”的列,只需执行 SELECT * FROM things ORDER BY some_column;

与此不同的是,您是否需要计算值来对表格进行排序。例如,订单总数。为了让您按订单总数对订单进行排序,表格中需要有一个计算值。查询仍然像我提到的那样简单。

关于mysql - SQL 主键可以这样吗? (名单上的排名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23089350/

相关文章:

php - 如何将SQL中的第一列更改为文本格式到XLS?

java - 准备好的语句不起作用,但当 UPDATE 在 mysql 中工作时在终端中写入

mysql - 从不同的表中选择并左连接

PHP 到 MySQL 数据库

mysql - 获取一个表中的所有记录以及第二个表中的相对最后一条记录

sql - 在 PostgreSQL 中格式化日期

MySQL #1054 - 'lat' 中的未知列 'field list'

MySQL从表中每个不同外键的10行中选择id

php - 使用 JOIN 查询速度慢

java - Java MySQL 连接器中的 DELETE 语句有任何已知问题吗?