我有两个名为vhistory和week2的表。 vhistory包括两列表决器和表决器历史记录。 week2包含年龄,地址,投票人数,投票历史,状态,性别,辖区,县和邮政编码5列。我需要使用表vhistory更新week2投票者历史记录,其中week2投票者人数= vhistory投票者人数。

例如:
在第2周内,有一个票数= 1234的人。
在历史记录中,有3条记录,其中选民数= 1234。
一个人的投票历史= 2011,一个人的投票历史= 2012,一个人的投票历史= 2013。
这意味着在更新week2时,vhistory的3条记录应导入到week2表的表决历史记录列中,如下所示:2011、2012、2013。

到目前为止,这就是我所拥有的。

UPDATE week2 SET voterhistory=SELECT CONCAT_WS(',',SELECT voterhistory FROM vhistory
WHERE week2.voternum = vhistory.voternum );

最佳答案

我认为您正在寻找update-join语句:

UPDATE week2
JOIN   (SELECT   voternum,
                 GROUP_CONCAT(voterhistory ORDER BY voterhistory SEPARATOR ',')
                   AS history
        FROM     vhistory
        GROUP BY voternum) h ON week2.voternum = h.voternum
SET    voterhistory = history

09-07 09:21