sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg bruge JOIN i UPDATE-sætning?

Jeg tror, ​​at dette burde gøre 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ørste JOIN filtrerer ned til svarene på det samme spørgsmål som svaret bliver accepteret.

Den anden JOIN finder det spørgsmål.

WHERE klausul vil begrænse opdateringen til kun spørgsmål med den givne forfatter og specificerer det svar-id, der accepteres.

DEMO

Tilføj

for den yderligere betingelse
AND (ques.free IS NULL or ans1.accepted IS NULL)

til WHERE klausul. ques.free IS NULL matcher ethvert gratis spørgsmål, og ans1.accepted IS NULL matcher et spørgsmål uden et accepteret svar (fordi når et svar accepteres, bliver alle de andre svar på det spørgsmål accepted = 0 ).

DEMO af spørgsmål uden accepteret svar
DEMO af spørgsmål, der er gratis




  1. ModuleNotFoundError:Intet modul med navnet 'mysql'

  2. Få localhost til at køre på mac OS X Yosemite

  3. Introduktion af ny funktion - Spotlight Cloud Replication

  4. SQL Vælg kun rækker med minimumsværdi på en kolonne med Where Condition