Как добавить +1 в столбец сортировки

У меня есть столбец таблицы с именем sort который используется для сортировки строк (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();
}

1

Решение

Попробуйте этот запрос

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

Другие решения

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();
}
1

Вы можете получить последнее значение и получить это значение, добавив его.

$ Запрос = ВЫБОР user_id, value
ОТ My_TABLE
СОРТИРОВАТЬ ПО user_id DESC
LIMIT 1;

1

Мне интересно, что вы используете для сортировки. Вы можете просто заказать существующий идентификатор для сортировки строк. Так как этот столбец уже автоматически увеличивается, как вы сказали. Наличие повторяющегося столбца в том, что уже доступно, обычно является плохим дизайном базы данных. Может быть, я не совсем понимаю, что вы пытаетесь сделать, не могли бы вы дать немного больше объяснений относительно того, что вы пытаетесь достичь с помощью столбца сортировки?

Если вы настроили настройку так, как вы указали, то, что вам нужно сделать, это сделать запрос и порядок по сортировке столбца по убыванию.

ВЫБЕРИТЕ сортировку из $ table order by sort desc. затем возьмите это значение, добавьте одно, затем вставьте значение в новое.

0
По вопросам рекламы [email protected]