sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag använda JOIN i UPDATE-satsen?

Jag tycker att det här borde göra det:

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

Den första JOIN filtrerar ner till svaren på samma fråga som svaret accepteras.

Den andra JOIN hittar den frågan.

WHERE klausulen begränsar uppdateringen endast till frågor med den givna författaren och specificerar det svars-ID som accepteras.

DEMO

För ytterligare villkor, lägg till

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

till WHERE klausul. ques.free IS NULL matchar alla gratisfrågor och ans1.accepted IS NULL matchar en fråga utan accepterat svar (eftersom när ett svar accepteras, blir alla andra svar på den frågan accepted = 0 ).

DEMO av frågan utan accepterat svar
DEMO av frågan som är gratis




  1. 2 sätt att konvertera ett tal till oktal i MySQL

  2. Vad är databasberoenden?

  3. Node.js loopar eller itererar synkront över asynkrona satser

  4. Kontrollera att tabellen finns eller inte innan du skapar den i Oracle