Esencialmente tengo que hacer algo como esto .... esto es sólo un ejemplo ... pero la sintaxis de la primera consulta no funciona en MySQLmysql SELECT anidado en ACTUALIZACIÓN misma mesa de
update people set prize = ''
where prize = 'Gold' and class = (select class from people where id = person_id);
update people set prize = 'Gold' where id = <id>;
Solo una persona puede tener el premio de oro en cualquier clase. Solo conozco la persona_id de la persona que recibe el premio de oro.
Estoy tratando de borrar a cualquier ganador de un premio Oro anterior en la misma clase que person_id en la primera consulta. Luego establece el nuevo ganador de Oro en el segundo.
Creo que necesito usar algún tipo de unión interna, pero no estoy 100% seguro de esto.
¡Lo que sería incluso más inteligente si pudiera hacer todo en una consulta!
¿Alguien puede prestar asesoramiento?
Gracias :)
Esto no hace lo mismo que ha escrito en la pregunta. Está anulando todos los premios dentro de una clase con "Oro" o "Plata" mientras que la consulta anterior solo quita los premios "Oro" y establece uno nuevo. Ejemplo: ¿qué pasa si una de las personas tiene un precio "Bronce"? – VVS
@David Hympohl: Buen punto, podrías hacer eso agregando "DONDE class = 'Gold' o id = @lucky" al final de la consulta. – Andomar
@David: la consulta de @op fija el premio en '' para cada persona dentro de la clase. Acabo de reemplazar un '' con 'Plata' por legibilidad – Quassnoi