2013-08-04 2 views
0

Возможно ли это только с использованием mysql:Вставить новый столбец, увеличить все строки

Вставьте новый столбец и пример - «pos». Каждая строка таблицы должна иметь уникальное значение inc posing «pos» like - 1,2,3,4,5.

В PHP это будет легкая работа:

$query = "SELECT * FROM example"; 

$result = mysql_query($query) or die(mysql_error()); 

$counter = 0; 
while($row = mysql_fetch_array($result)){ 
    mysql_query("UPDATE example SET pos = ".++$counter." WHERE id = ".$row['id']."); 
} 

ответ

1

Как уже было предложено, наиболее эффективным решением является использование автоматической инкрементальности по pos.

В качестве альтернативы, если ваш случай использования не позволяют вам, то попробуйте похожи:

"UPDATE example SET pos = ((select max(pos) from example) +1) WHERE id 
= ".$row['id']." 
1

да, вы можете сделать это как то

UPDATE example SET pos = pos+1 WHERE id = ".$row['id']." 
+0

вы имеете в виду это: UPDATE Пример SET конт = позиция + 1 WHERE ID = идентификатор Это только увеличивает все мои поз строки 1. Значение по умолчанию равно 0, поэтому все мои строки имеют значение pos 1. –

+1

он будет обновлять только указанную строку с помощью строки $ row ['id'] не всех строк –

+0

Не правильный ответ - не только с использованием mysql, но ярлык с php. Спасибо за внимание, я думаю, –

0

Дайте pos MySQL поле в auto_increment атрибут - этот показатель будет это, сделать это уникально и приращение на 1 на каждую вставку.

+0

с помощью mysql. В таблице уже есть auto_incremented столбец. Я действительно не думаю, что в таблице может быть два из них. –

Смежные вопросы