sql >> Databáze >  >> RDS >> Mysql

Jak mohu použít JOIN ve výpisu UPDATE?

Myslím, že by to mělo stačit:

UPDATE QandA AS ans1
JOIN QandA AS ans2 ON ans2.related = ans1.related
JOIN QandA AS ques ON ans2.related = ques.id
SET ans1.accepted = (ans1.id = :answer_id)
WHERE ques.author_id = :session_id
AND ans2.id = :answer_id

První JOIN filtruje dolů na odpovědi na stejnou otázku jako přijímaná odpověď.

Druhý JOIN najde tuto otázku.

WHERE klauzule omezí aktualizaci pouze na otázky s daným autorem a specifikuje přijímané ID odpovědi.

DEMO

Pro další podmínku přidejte

AND (ques.free IS NULL or ans1.accepted IS NULL)

do WHERE doložka. ques.free IS NULL odpovídá libovolné volné otázce a ans1.accepted IS NULL odpovídá otázce bez přijaté odpovědi (protože když je odpověď přijata, všechny ostatní odpovědi na tuto otázku budou accepted = 0 ).

DEMO na otázku bez přijaté odpovědi
DEMO otázky, která je zdarma




  1. Jak funguje funkce LOWER() v MySQL

  2. Jak získám desetinná místa při zaokrouhlování průměru v SQL

  3. Výběr posledních 7 dní z Now() v MYSQL

  4. Bezplatná databáze polní nemocnice pro boj s pandemií COVID-19