php - 在 MySQL 中存储某物的顺序

标签 php mysql

假设我有一个如下所示的表:

name VARCHAR(50) PRIMARY KEY NOT NULL
ordernum TINYINT UNSIGNED NOT NULL

另外假设我有 3 行。

something     - 1
somethingelse - 2
somethingmore - 3

如果我想插入另一个名为 something1 的条目,并将其 ordernum 设置为 2,我该如何重新排序 ordernum 为 2 或更大的所有行?即 somethingelse 的 ordernum 为 3,而 somethingmore 的 ordernum 为 4?

我听说您可以通过 FIELD() 来完成,但我不确定具体怎么做。

如果不可能,无论如何用 PHP 来做?

最佳答案

在你的例子中:

UPDATE `table` SET `ordernum` = `ordernum` + 1 WHERE `ordernum` >= 2
INSERT INTO `table` (`name`, `ordernum`) VALUES ('something1', 2)

关于php - 在 MySQL 中存储某物的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4065767/

相关文章:

python - Peewee 未设置最后插入 ID

php - 让 PHP 的 XMLReader 不在无效文档中抛出 PHP 错误

php - 丢失 sfGuard 管理员密码 - 需要重置

mysql - 如何从 2 个不同的表中排除结果并显示结果?

Python 和 MySQL 插入查询

mysql - 在 MySQL 中使用正确的或可取的不等于运算符

PHP MySQL 更新语句不起作用

javascript - tinymce 使用文件浏览器添加图像

php - 声明 PHP 数组时设置简单的默认值

java - spring 3、hibernate 3、maven 和 mysql 的集成