Essentiellement je dois faire quelque chose comme ça .... c'est juste un exemple ... mais la syntaxe de la première requête ne fonctionne pas dans MySQLmysql SELECT imbriquée UPDATE de même table
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>;
Une seule personne peut avoir le prix Or dans n'importe quelle classe. Je ne connais que le person_id de la personne qui reçoit le prix Or.
J'essaie d'éliminer tous les anciens gagnants du prix Or dans la même classe que person_id dans la première requête. Ensuite, définissez le nouveau gagnant Gold dans la seconde. Je crois que je dois utiliser un type de jointure interne, mais je ne suis pas sûr à 100% sur ce point.
Ce qui serait encore plus intelligent si je pouvais faire le tout en une seule requête!
Quelqu'un peut-il donner des conseils?
Merci :)
Cela ne veut pas faire la même chose que publiée dans la question. Vous remplacez tous les prix d'une classe par "Or" ou "Argent", tandis que la requête ci-dessus ne supprime que les prix "Or" et en définit une nouvelle. Exemple: et si une personne avait un prix "Bronze"? – VVS
@David Hympohl: Bon point, vous pouvez le faire en ajoutant "WHERE class = 'Gold' ou id = @lucky" à la fin de la requête. – Andomar
@David: la requête @ op définit le prix sur '' pour chaque personne de la classe. Je viens de remplacer un '' par 'Silver' pour plus de lisibilité. – Quassnoi