Zasadniczo muszę zrobić coś takiego .... to jest tylko przykład ... ale składnia pierwszej kwerendy nie działa w MySQLMySQL zagnieżdżone SELECT w aktualizacji samej tabeli
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>;
Tylko jedna osoba może otrzymać nagrodę Złotą w dowolnej klasie. Znam tylko person_id osoby, która otrzymuje nagrodę Gold.
Próbuję odrzucić wszystkie poprzednie nagrody Gold zwycięzców w tej samej klasie co person_id w pierwszym zapytaniu. Następnie ustaw nowego zwycięzcę Złotego w drugim.
Uważam, że muszę użyć pewnego rodzaju sprzężenia wewnętrznego, ale nie jestem w 100% pewny.
Co byłoby jeszcze mądrzejsze, gdybym mógł wykonać całe zadanie w jednym zapytaniu!
Czy ktoś może udzielić porady?
Dzięki :)
nie zrobić tak samo jak pisał w pytaniu. Zmieniasz każdą nagrodę w klasie na "Złoto" lub "Srebro", podczas gdy powyższe zapytanie usuwa tylko nagrody "Złoto" i ustawia nowe. Przykład: co, jeśli jedna z osób ma cenę "brązową"? – VVS
@ David Hympohl: Dobrze, możesz to zrobić, dodając "WHERE class =" Gold "lub id = @lucky" na końcu zapytania. – Andomar
@David: zapytanie @ op ustawia nagrodę na "" dla każdej osoby w klasie. Właśnie zastąpiłem "" z "Srebrem" dla czytelności – Quassnoi