2009-02-27 11 views
1

J'ai une table avec une colonne d'état (initialement avec progress). Je dois mettre à jour la valeur de cette colonne à success.Mise à jour d'une colonne

Est-ce que cette requête est ce que je veux?

Update "tablename" set status='success' where status='progress' 

La raison pour laquelle je demande est que la mise à jour et la condition where vérifient la même colonne.

Est-ce correct?

Répondre

2

Cette instruction changera la valeur pour chaque ligne où l'état était "progression" à "succès". Est-ce vraiment ce que tu veux?

+0

Ma question est - est-il travail ?, car ici j'ai utilisé le statut pour modifier et aussi où condition. – praveenjayapal

+0

Oui, il va fonctionner – tehvan

+0

oui son fonctionnement, il est confus - maintenant je suis clair. Je vous remercie. – praveenjayapal

4

Cela fonctionnera mais il va modifier toutes les lignes qui ont progressé dans cette colonne.

Je pense que vous voudrez probablement limiter la mise à jour en fonction d'une autre partie de l'enregistrement.

Par exemple, si elle était la progression de l'installation d'un morceau particulier de logiciel (disons Ubuntu sur le numéro de la machine 7):

update tbl set status='success' 
where status='progress' 
and machine_id = 7 
and software = 'Ubuntu' 

D'un point de vue conceptuel, il est la collecte de la liste des enregistrements pour changer d'abord (avec la clause where), puis en appliquant update ... set à tous ces enregistrements.

2

oui, c'est exact, toutes les lignes où le « progrès » = statut sera mis à jour

2

Oui, c'est très bien. Cela va mettre à jour chaque ligne de la table qui est "progrès" pour être "succès", mais pas seulement un. Je ne suis pas sûr que ce soit ce que tu veux ou pas.

3

Oui cela est exact, identifier la ligne/s que vous souhaitez modifier et valider les informations sur les colonnes specirfifed:

Update MyTable set Allowed = 1 WHERE Allowed = 0 AND UserID = 123 

Cheers,

Andrew