如何在排序列中添加 +1

How to add +1 in a sort column

我有一个名为 sort 的 table 列,用于对行进行排序(1 2 3...等)。
当我插入新行时,如何在该列中自动添加一个增量+1

例如,如果最后一行的值为 20,则新的应为 21。
我试图将此列设置为自动递增,但 phpMyAdmin 说只有一列可以是 auto(在我的例子中是 id)。

另一种解决方案是将新行作为第一行插入,在排序列中使用值 1,但是在这种情况下我如何更改下面的所有其他值?

有什么帮助吗?

try {
$stmt = $db->prepare('INSERT INTO ' . $table. ' (title, content, sort) VALUES (:title, :content, :sort)') ;
$stmt->execute(array(
':title' => $title,
':content' => $content,
':sort' => ???,
));
header('Location:admin.php');
exit;

} catch(PDOException $e) {
echo $e->getMessage();
}
try {
$stmt = $db->prepare('INSERT INTO ' . $table. ' (title, content, sort) VALUES (:title, :content, :sort)') ;
$stmt->execute(array(
':title' => $title,
':content' => $content,
':sort' => $sort+1
));
header('Location:admin.php');
exit;

} catch(PDOException $e) {
echo $e->getMessage();
}

试试这个查询

"INSERT INTO $table (title, content, sort) VALUES ($title, $content,(SELECT MAX(sort)+1 FROM $table))"

我很好奇你用 sort 做什么。您可以只按现有 id 排序以对行进行排序。正如您所说,因为该列已经自动递增。让另一列复制已经可用的内容通常是糟糕的数据库设计。也许我没有完全理解你想要做什么,你能再多解释一下你想用排序列完成什么吗?

如果您打算按照您指定的方式进行设置,您需要做的是进行查询并按列降序排序。

SELECT 从 $table 按排序顺序排序。然后将该值加一,然后将该值插入新值。

您可以检索最后一个值并通过加一来存储该值。

$query=SELECT user_id, value 来自 My_TABLEuser_id 降序排序 限制 1;