我有 2 张 table
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
我找不到此类插入的类似示例,并且想知道是否有好心人可以为我指明正确的方向。
最佳答案
我认为您的意思是根据行程上的匹配记录从表
表。positions
中UPDATE
列FK_Trips_ID
您可以连接两个表以仅对数据库发出一个请求,
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);
关于php - 将 sql 表内容从一个表复制到另一个表 - 有条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15703558/