Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да използвам JOIN в израза UPDATE?

Мисля, че това трябва да стане:

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

Първият JOIN филтрира до отговорите на същия въпрос като отговора, който се приема.

Вторият JOIN намира този въпрос.

WHERE клаузата ще ограничи актуализацията само до въпроси с даден автор и посочва идентификатора на отговора, който се приема.

ДЕМО

За допълнителното условие добавете

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

до WHERE клауза. ques.free IS NULL съответства на всеки безплатен въпрос и ans1.accepted IS NULL съответства на въпрос без приет отговор (защото когато отговорът е приет, всички останали отговори на този въпрос получават accepted = 0 ).

ДЕМО на въпрос без приет отговор
ДЕМО на въпрос, което е безплатно




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. СЪЕДИНЕТЕ три маси

  2. Добавяне на данни към Cloud Firestore база данни

  3. ReplicationManager хвърли изключение при отваряне на връзка

  4. Как да изчислим процентния растеж месец по месец в MySQL

  5. За да използвате utf8 или не - проблем с кодирането на символи в MySQL и PHP