如何在排序列中添加 +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_TABLE
按 user_id
降序排序
限制 1;
我有一个名为 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_TABLE
按 user_id
降序排序
限制 1;