我有一个名为week1的数据库,其中包含列:age, address, voternum, voterhistory, status, gender, precinct, county, and zip5

该表中已包含除voterhistory以外的所有行的信息!

我需要将独立于名为vhist的文本文件的voterhistory列导入表,其中week1表的voternum等于vhist文本文件的voternum

文本文件中的多行可以放在voterhistory列中,并用逗号分隔。

例如:

在第1周内,有一个人为voternum = 1234
在vhist文本文件中,有3条记录在voternum = 1234中。

一个具有voterhistory = 2011,一个具有voterhistory = 2012,另一个具有voterhistory = 2013

这意味着在导入vhist文本文件时,这3条记录应导入到week1表的voterhistory列中,如下所示:2011, 2012, 2013

抱歉,这听起来令人困惑,但这是我知道如何解释的唯一方法。如果您需要更多信息,请告诉我。

最佳答案

在MySQL中,我们有一个名为CONCAT_WS()的函数,它基本上使用指定的分隔符来连接字符串值。看一下链接。

我将使用一个临时表将vhist加载到内存中,然后将表week1连接到临时表vhistory并根据键匹配更新week1。这使您不必在SQL连接中实现条件逻辑。

在代码中它将看起来像这样,您可能需要对此稍作努力才能使其运行:

CREATE TEMPORARY TABLE vhistory  (
     voternum VARCHAR(10) NOT NULL
    , voterhistory VARCHAR(10)
   );

LOAD DATA LOCAL INFILE '/path/vhist.txt' INTO TABLE vhistory;


UPDATE week1 SET voterhistory=SELECT CONCAT_WS(SELECT ',',voterhistory FROM vhistory
WHERE week1-voternum = vhistory-voternum );


我没有您的数据,因此未运行此代码。

关于php - 如何将信息添加到现有数据库中的特定列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23257618/

10-11 23:33