将sql表内容从一个表复制到另一个表 - 有条件地

时间:2013-03-29 12:47:47

标签: php mysql sql join sql-update

我有2张桌子 positions - 其中包含一个名为“tripname”的字段 trips - 其中包含一个名为“name

的字段

我使用一个csv文件从中导入数据到这两个表中,现在我需要做一些进一步的更新,并且有点卡住了。

通过添加csv文件中包含的行数来更新“positions”表。一个字段称为“tripname”(包含值),另一个字段称为“FK_Trips_ID”(添加为NULL)。

trips”表只更新了一行(如果它还不存在),其中包含一个名为“name”的字段和另一个名为“ID”的字段。

这是我被困的地方。我需要:

Insert into the 'positions.FK_Trips_ID' field the value of the 'trips.ID'
where the 'trips.name' is equal to the 'positions.tripname
- BUT only if 'positions.FK_Trips_ID' is NULL

我找不到这种类型插入的类似例子,并想知道某种灵魂是否能指出我正确的方向。

1 个答案:

答案 0 :(得分:2)

根据UPDATE表格上的匹配记录,我认为你的意思是来自表格FK_Trips_ID的{​​{1}}列positions

您可以将两个表连接到数据库上只有一个请求,

trips

为了更快地执行UPDATE positions a INNER JOIN trips b ON a.tripname = b.name SET a.FK_Trips_ID = b.ID WHERE a.FK_Trips_ID IS NULL 语句,列必须是索引,以避免执行全表扫描,这会导致在大型数据库上执行此操作时速度变慢。

UPDATE