Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để sử dụng lệnh JOIN trong câu lệnh UPDATE?

Tôi nghĩ điều này nên làm:

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 đầu tiên lọc xuống các câu trả lời cho cùng một câu hỏi khi câu trả lời đang được chấp nhận.

JOIN thứ hai tìm câu hỏi đó.

WHERE điều khoản sẽ giới hạn cập nhật chỉ đối với các câu hỏi với tác giả nhất định và chỉ định ID câu trả lời được chấp nhận.

DEMO

Đối với điều kiện bổ sung, hãy thêm

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

đến WHERE mệnh đề. ques.free IS NULL khớp với bất kỳ câu hỏi miễn phí nào và ans1.accepted IS NULL khớp với một câu hỏi không có câu trả lời được chấp nhận (vì khi một câu trả lời được chấp nhận, tất cả các câu trả lời khác cho câu hỏi đó sẽ được accepted = 0 ).

DEMO của câu hỏi không có câu trả lời được chấp nhận
DEMO miễn phí




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql chuyển đổi thời gian 12 giờ thành 24 giờ

  2. Sự cố cài đặt mysql-python (trên mac os x lion)

  3. Làm thế nào để đếm có bao nhiêu bác sĩ được đặt cho mỗi bệnh nhân?

  4. Tạo một bảng tạm thời với ngày tháng

  5. Giải thích về khung khả dụng cao của MySQL - Phần I:Giới thiệu