0

我有 2 个表 positions - 其中包含一个名为 ' tripname' 的字段 - 其中包含一个名为 ' 'trips的字段name

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

' positions' 表通过添加与 csv 文件中包含的行数一样多的行来更新。一个字段称为 ' 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

我找不到此类插入的类似示例,并且想知道是否有善良的灵魂可以为我指明正确的方向。

4

1 回答 1

2

我认为您的意思是根据表上的匹配记录从表中分UPDATE列。FK_Trips_IDpositionstrips

您可以加入两个表以在数据库上只有一个请求,

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语句,列必须是索引以避免执行全表扫描,这会导致在大型数据库上执行此操作时变慢。

ALTER TABLE positions ADD INDEX (tripname);
ALTER TABLE trips ADD INDEX (name);
于 2013-03-29T12:58:30.543 回答