Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę użyć JOIN w instrukcji UPDATE?

Myślę, że to powinno wystarczyć:

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

Pierwsze JOIN filtruje do odpowiedzi na to samo pytanie, co zaakceptowana odpowiedź.

Drugie JOIN znajdzie to pytanie.

WHERE klauzula ograniczy aktualizację tylko do pytań z podanym autorem i określa akceptowany identyfikator odpowiedzi.

DEMO

Dla dodatkowego warunku dodaj

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

do WHERE klauzula. ques.free IS NULL pasuje do dowolnego bezpłatnego pytania, a ans1.accepted IS NULL dopasowuje pytanie bez zaakceptowanej odpowiedzi (ponieważ gdy odpowiedź jest akceptowana, wszystkie inne odpowiedzi na to pytanie są accepted = 0 ).

DEMO pytania bez zaakceptowanej odpowiedzi
DEMO pytania, które jest bezpłatne




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przyznaj użytkownikowi uprawnienia do wyświetlania tylko widoku MySQL i niczego więcej

  2. SQL:Pobierz produkty z kategorii, ale muszą również znajdować się w innym zestawie kategorii

  3. Spring-Boot, nie można zapisać ciągu Unicode w MySql przy użyciu spring-data JPA

  4. Najlepszy sposób na zbudowanie wyszukiwarki SMART mySQL i PHP?

  5. Problem LAG/LEAD MySQL