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

标签 php mysql sql join sql-update

我有 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

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

最佳答案

我认为您的意思是根据行程上的匹配记录从表positionsUPDATEFK_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/

相关文章:

sql - 自连接查询

sql - 列数更改时将数据插入SQLite表的动态方法

sql - 在 Athena 中,如何在结构中的数组中查询结构的成员?

sql - SQL-获取平均年龄在范围内的用户数

php - 标准 PHP 库 (SPL) 函数的时间复杂度

php - 在 PHP 中 2<<3 返回 16 和 3 << 2 返回 12 请有人解释一下吗

javascript - 检索 HTML 表中复选框选定行的第一列值并相应地修改数据库

PHP/MySQL : Match content of one table with another and print that instead

php - CakePhp:防止同时插入相同信息的重复调用

MySql合并多个表得到一个结果?