Im Wesentlichen, so etwas zu tun, ich brauche .... Dies ist nur ein Beispiel ... aber die Syntax der ersten Abfrage funktioniert nicht in MySQLmysql SELECT in UPDATE von derselben Tabelle verschachtelt
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>;
Nur eine Person kann den Goldpreis in jeder Klasse haben. Ich kenne nur die person_id der Person, die den Goldpreis erhält.
Ich versuche, alle vorherigen Gold-Preisträger in der gleichen Klasse wie person_id in der ersten Abfrage auszublenden. Setzen Sie dann den neuen Gold-Gewinner in der zweiten.
Ich glaube, ich muss eine Art von inneren Join verwenden, aber ich bin mir nicht 100% sicher.
Was wäre noch schlauer, wenn ich das ganze in einer Abfrage tun könnte!
Kann mir jemand einen Rat geben?
Thanks :)
Das ist nicht das gleiche tut wie in der Frage geschrieben. Sie überschreiben jeden Preis innerhalb einer Klasse entweder mit "Gold" oder "Silber", während die obige Abfrage nur die "Gold" -Preise entfernt und einen neuen setzt. Beispiel: Was wäre, wenn einer der Leute einen "Bronze" -Preis hätte? – VVS
@David Hympohl: Guter Punkt, Sie könnten das tun, indem Sie "WHERE class = 'Gold' oder id = @lucky" an das Ende der Abfrage anhängen. – Andomar
@David: Die Abfrage von @ op setzt den Preis auf '' für jede Person innerhalb der Klasse. Ich habe gerade ein '' mit 'Silber' ersetzt, um die Lesbarkeit zu verbessern. – Quassnoi