52 votes

MySQL: moyen simple de basculer la valeur d'un champ int

Je sais comment faire cela, mais je pense que je vais trop compliquer les choses avec une double sélection, etc.

Comment pouvez-vous faire cela (exemple dans pseudo-sql)

 UPDATE some_table SET an_int_value = (an_int_value==1 ? 0 : 1);
 

Il doit s'agir d'une valeur int due à une autre fonctionnalité, mais comment procédez-vous de manière simple?

119voto

FDisk Points 2264
UPDATE table SET field = 1 - field

90voto

vartec Points 53382
 UPDATE some_table SET an_int_value = IF(an_int_value=1, 0, 1);
 

http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_if

16voto

Glavić Points 13021
UPDATE some_table SET an_int_value = IF(an_int_value=1, 0, 1)

11voto

Eric Petroelje Points 40734

Dans ce cas, vous pouvez utiliser une opération de type XOR:

 UPDATE some_table SET an_int_value = an_int_value XOR 1
 

Cela suppose que an_int_value sera toujours 1 ou 0 cependant.

4voto

Jayapal Chandran Points 1701

Je peux voir les réponses de toutes les personnes expérimentées et moi aussi je me suis mis à jour avec leurs réponses.

Qu'en est-il de cette ... je fais de cette façon ...

 UPDATE tablename SET fieldname = not fieldname
 

tout organisme peut-il donner des suggestions s'il vous plaît si cela ne sera pas une solution réalisable. en ce qui concerne la vitesse d'exécution ou tout autre ... que dire ... fait ... concept ....

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X