关于mysql:如何使用单个查询更新SQL而不是使用php循环?

How to update SQL with single query and not with php loop?

本问题已经有最佳答案,请猛点这里访问。

这些是我的表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
tbl_answers =>
  aid    
  qid    
  answer    
  uid    
  dateposted    
  emailnotify
  namedisplay
  status
  isbestanswer


tbl_questions =>
  qid
  question
  detail
  mcid
  cid
  uid    
  answercount
  dateposted
  status
  showname
  emailnotify
  question_type_id

我试过这个:

1
2
3
4
5
6
7
8
9
UPDATE tbl_questions
JOIN (
SELECT id, COUNT(*) AS n
FROM tbl_questions JOIN tbl_answers ON qid = tbl_questions.qid
WHERE answercount ="0"
GROUP BY id
) AS T USING (id)
SET num = n
WHERE n > 0

我想更新那些得到更多答案而不是计算在内的问题:
tbl_questions => answersercount

如何更新比计算的问题更多的行? (没有php循环)


1
2
3
4
5
6
7
8
UPDATE tbl_questions
  JOIN (
    SELECT tbl_questions.qid, COUNT(*) AS n
    FROM tbl_questions JOIN tbl_answers ON tbl_answers.qid = tbl_questions.qid  
    GROUP BY qid
  ) AS T USING (qid)
SET answercount = n
WHERE n > 0'