Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Dexter Morgan

Update em todos campos da Tabela

Recommended Posts

Boa tarde, preciso acrescentar um novo campo na tabela, onde terá uma ordem numerica:

CREATE TABLE tabela(
	id int(11) NOT NULL auto_increment,
	campo varchar(255) NOT NULL default '',
	novo_campo int(11) NOT NULL default '0',
	PRIMARY KEY(id)
) ENGINE = InnoDB;

a unica coisa que preciso, é de fazer um update no (novo_campo) em ordem numerica; exemplo ela tem 309 registros, precisava que o novo_campo numere do 0 até o 308 tentei fazer um loop assim:

<?php

$x = 0;
while($x <= 308){
$resultado = mysql_query("UPDATE tabela SET novo_campo = '$x'");
$x++;
}

?>

porém como podem imaginar nao deu certo, e jogou tudo 308, alguem sabe como fazer isso de forma rapida ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Direto no mysql:
SET @rowNumber=-1;
UPDATE tabela SET novo_campo = @rowNumber:=@rowNumber+1;

É iniciado com -1 para o primeiro valor registrado ser 0.

Caso fosse 0, o primeiro valor seria 1.

 

Não consegui testar ainda aqui, caso não funcionar, farei uns testes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel tentei aqui e deu erro:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@rowNumber:=@rowNumber+1' at line 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei e funcionou, caso necessita de alguma ordem, pode ser adicionada:

SET @rowNumber=-1;
UPDATE tabela SET novo_campo = @rowNumber:=@rowNumber+1 ORDER BY id ASC;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Copie novamente, a primeira vez que eu postei tinha um erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.