sql >> Database >  >> RDS >> Mysql

Hoe kan ik JOIN gebruiken in de UPDATE-instructie?

Ik denk dat dit het zou moeten doen:

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

De eerste JOIN filtert naar de antwoorden op dezelfde vraag als het antwoord dat wordt geaccepteerd.

De tweede JOIN vindt die vraag.

De WHERE clausule beperkt de update alleen tot vragen met de opgegeven auteur en specificeert de antwoord-ID die wordt geaccepteerd.

DEMO

Voeg voor de aanvullende voorwaarde

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

naar de WHERE clausule. ques.free IS NULL komt overeen met elke gratis vraag, en ans1.accepted IS NULL komt overeen met een vraag zonder geaccepteerd antwoord (omdat wanneer een antwoord wordt geaccepteerd, alle andere antwoorden op die vraag accepted = 0 worden ).

DEMO van vraag zonder geaccepteerd antwoord
DEMO van vragen die gratis is




  1. Is het mogelijk om een ​​auto-increment id-kolom te maken in de mysql-weergave?

  2. Wanneer afbeeldingen opslaan in een database (mySQL) en wanneer niet? (Afbeelding koppelen aan item in database)

  3. Query voor het tellen van verschillende waarden in een voortschrijdend datumbereik

  4. Alleen-lezen gebruiker maken in PostgreSQL