我正在尝试将av.UnitType设置为ut.unittype中的值,只要三列匹配,我想知道此语句的哪些部分导致它花费这么长时间:
SET SQL_SAFE_UPDATES=0;
UPDATE `db`.`table_av` av, `db`.`table_ut` ut
SET av.UnitType = ut.unittype
WHERE TRIM(LEADING '0' FROM av.id) = ut.id
AND av.veh = ut.veh
AND av.date LIKE CONCAT('%', ut.Year);
答案 0 :(得分:1)
将联接更改为当前使用的语法
SET SQL_SAFE_UPDATES=0;
UPDATE `db`.`table_av` av,
JOIN `db`.`table_ut` ut
ON TRIM(LEADING '0' FROM av.id) = ut.id
AND av.veh = ut.veh
AND av.date LIKE CONCAT('%', ut.Year);
SET av.UnitType = ut.unittype
最后一行应该使用日期函数而不是像(如果可能的话)。更好的是,确保两列是 每个表中的兼容类型(即TIMESTAMP,或int或varchar中的至少4位数。