2011-05-13 79 views
2

好的,我有一个名为id的列,其中有2000个“ids”,并且我有一个新添加的名为“name”的字段。将数据插入列

我想知道如何去插入一个名称列表,以便他们排队到他们相应的ID?

id ||名称

1 || bob 
2 || smith 
3 || john 
4 || louis 
5 || kevin 
6 || jacob 
7 || tim 

我对不清楚这个问题表示歉意。 id和name都在同一张表中。过去添加的卡片与描述,颜色等其他位数据相同,因此已经生成了很多ID。我刚刚被要求在表格“卡片”中添加一个名称字段,并将电子表格中的数据插入到所述名称字段中。

+1

这个问题不是很清楚... – 2011-05-13 15:14:05

+0

名称列表位于哪里,它是否也有ID? – RedFilter 2011-05-13 15:14:56

+0

我对不清楚问题表示歉意。 id和name都在同一张表中。过去添加的卡片与描述,颜色等其他位数据相同,因此已经生成了很多ID。我刚刚被要求在表格“卡片”中添加一个名称字段,并将电子表格中的数据插入到所述名称字段中。 – 2011-05-13 15:30:19

回答

4

如果你有一个电子表格中的数据,2列,编号和名称,你可以做到以下几点:

在电子表格中的第三列,做

=CONCATENATE("UPDATE cards SET name = '",A1,"' WHERE id = ",A2,";") 

然后将该公式拖至所有行。然后你可以运行生成的查询。对于2000行,它不应该花费很长时间。

+0

假设你正在使用Excel。否则,不同的功能也会以相同的方式工作。 – gmadd 2011-05-13 15:38:19

+0

@gmadd,是的,我将给出的数据是在Excel电子表格中,我只需要将该数据添加到表格中。到目前为止,该表只包含“id”,而电子表格的名称为“name” – 2011-05-13 16:37:36

+0

@gmadd,感谢您的建议。这正是我完成工作所需要的。 – 2011-05-16 12:33:12

2

您需要id和name之间的已知关系。因此,在使用它来更新表格之前,您的名称列表必须包含该ID。由于这一定是这种情况,因此请创建一个带有id,name的临时表并使用它来更新主表。例如

CREATE TEMPORARY TABLE tmptable(id INT(10) UNSIGNED PRIMARY KEY, 
           firstname VARCHAR(20)); 
LOAD DATA INFILE '/path/to/mynames.txt' INTO tmptable(id, firstname); 
UPDATE mytable m JOIN tmptable t ON (m.id=t.id) SET m.firstname=t.firstname; 

退房LOAD DATA INFILE语法here