o más fácil, 3 queries.... una para cambiar todos los ceros a un número imposible, tipo nueve, luego cambiar todos los unos a cero, y luego cambiar todos los nueves a uno!
Mysql: actualizar un dato con una condición
Es un minitip para programadores en apuros, como siempre sirve googlear y que te aparezca un resultado, venga, hice lo mismo y correspondo con contribuir con la sociedad.
Querés actualizar un valor de 0 a 1 o de 1 a 0? una cosa que dependa de otra? por una condición? es fácil:
update usuario set negativizer = case when negativizer = 0 then 1 else 0 end where id_usuario = 1
Para darles un ejemplo, lo que hace es simplemente cambiar el valor cuando ya tiene uno y al volver a ejecutar esta sentencia lo vuelve a cambiar, ideal para valores binarios como este caso.
Se que hay otras formas pero me gustó esta de resolverlo

Otros posts que podrían llegar a gustarte...
Comentarios
-
Kromfeld dijo:
o más fácil, 3 queries.... una para cambiar todos los ceros a un número imposible, tipo nueve, luego cambiar todos los unos a cero, y luego cambiar todos los nueves a uno!
más cochino no podías ser? jajaja alumno kromfield! usted está desaprobado! :D
-
Siempre hay una solución estilo BASIC para todo :P
Se puede hacer perfectamente como lo planteaste, pero, ya que es un valor binario, no es más fácil, rápido y bonito, solo negarlo? negativizer = NOT negativizer ?
-
Adrian Ramiro dijo:
Siempre hay una solución estilo BASIC para todo :P
Se puede hacer perfectamente como lo planteaste, pero, ya que es un valor binario, no es más fácil, rápido y bonito, solo negarlo? negativizer = NOT negativizer ?
Si ideal para este caso, pero el codigo de fabio sirve para cualquier par de valores.
Fabio dijo:
Kromfeld dijo:
o más fácil, 3 queries.... una para cambiar todos los ceros a un número imposible, tipo nueve, luego cambiar todos los unos a cero, y luego cambiar todos los nueves a uno!
más cochino no podías ser? jajaja alumno kromfield! usted está desaprobado! :D
jaja 100% deacuerdo!
-
Fabio: Con esta ayuda te ganarias un lindo lugar en http://thedailywtf.com/Default.aspx... Kromfeld iria directamente al podio...
si fuera numerico podrias hacer algo asi como (no es exacto):
update usuario set negativizer = ABS(negativizer-1).
Puede que ABS no sea la funcion exacta, pero la idea es que te devuelva el valor absoluto.
-
Usando tu ejemplo, yo siempre uso:
UPDATE Usuario
SET negativizer = 1 - negativizer
WHERE id_usuario = 1
-
myNick dijo:
Usando tu ejemplo, yo siempre uso:
UPDATE Usuario
SET negativizer = 1 - negativizer
WHERE id_usuario = 1
que debe ser más óptimo para cambios booleanos
el CASE te puede servir para más de dos estados, claro.
-
Por BASIC me refería a la reseña de Kromfeld, y no me desentiendo de las burradas que yo hice, que han sido peores.
Si se deja la puerta abierta para más de 2 valores, creo que la solución del CASE es la más acertada
-
Fabio dijo:
Kromfeld dijo:
o más fácil, 3 queries.... una para cambiar todos los ceros a un número imposible, tipo nueve, luego cambiar todos los unos a cero, y luego cambiar todos los nueves a uno!
más cochino no podías ser? jajaja alumno kromfield! usted está desaprobado! :D
no es cochino, es simple, entendible, fácil de mantener, y funciona en cualquier implementación de sql
para mí <strong>TU</strong> código es un muy buen ejemplo de código cochino :)
alumno fabio, relea sobre buenas prácticas de programación y vuelva el cuatrimestre que viene :)
-
Kromfeld dijo:
Fabio dijo:
Kromfeld dijo:
o más fácil, 3 queries.... una para cambiar todos los ceros a un número imposible, tipo nueve, luego cambiar todos los unos a cero, y luego cambiar todos los nueves a uno!
más cochino no podías ser? jajaja alumno kromfield! usted está desaprobado! :D
no es cochino, es simple, entendible, fácil de mantener, y funciona en cualquier implementación de sql
para mí <strong>TU</strong> código es un muy buen ejemplo de código cochino :)
alumno fabio, relea sobre buenas prácticas de programación y vuelva el cuatrimestre que viene :)
estás equivocado, hacer 3 queries es mejor que uno en otros casos, no en este!
en tu caso ya asumías un "valor imposible" de reemplazo momentáneo cuando no era necesario, simplemente había que evaluar el valor actual para invertirlo o cambiarlo. Fijate el resto de los ejemplos que dejaron, uno más elegante que el otro y todos en un sólo query!
una consulta a la base tan simple es siempre mejor que tres cochinadas :D eso es una pésima práctica de programación, más en SQL
-
Kromfeld dijo:
Fabio dijo:
Si esas 3 queries no están dentro de una transacción entonces es un gran problema. Ya que si desde otra consulta necesitan leer el valor de esa fila justo luego de poner el valor imposible (pero antes de reemplazarlo) entonces el resultado no va a tener ningún sentido. En definitiva, si no son parte de una transacción tu solución es incorrecta.
Kromfeld dijo:
o más fácil, 3 queries.... una para cambiar todos los ceros a un número imposible, tipo nueve, luego cambiar todos los unos a cero, y luego cambiar todos los nueves a uno!
más cochino no podías ser? jajaja alumno kromfield! usted está desaprobado! :D
no es cochino, es simple, entendible, fácil de mantener, y funciona en cualquier implementación de sql
para mí <strong>TU</strong> código es un muy buen ejemplo de código cochino :)
alumno fabio, relea sobre buenas prácticas de programación y vuelva el cuatrimestre que viene :)
-
re-loco dijo:
che, es verdad que en capital federal a MySQL le dicen mai sicuel en lugar de mai ese-cu-ele?
pregunta pelotuda, pero yo le digo "mai esecuele", sicuel dicen los boludos, al igual que shavvva en vez de jjjjjjjjjava :D