我有以下更新声明
UPDATE mytable
set tmax = (
SELECT tmax
FROM myvalues
WHERE Longitude_MAX >= v_lng and
STR_TO_DATE(Date, '%m/%d/%Y') = v_date
limit 1),
tmin = (
SELECT tmin
FROM myvalues
WHERE Longitude_MAX >= v_lng and
STR_TO_DATE(Date, '%m/%d/%Y') = v_date
limit 1),
where pkid = v_pkid;
它的工作但很慢,我们能优化它吗?
net上有一些例子,但是这些连接两个表并没有这样的连接。
答案 0 :(得分:2)
尝试使用JOIN
UPDATE mytable mt
INNER JOIN myvalues mv
ON STR_TO_DATE(mv.Date, '%m/%d/%Y') = mt.accident_dt
SET mt.tmax = mv.tmax , mt.tmin=mv.tmin
WHERE Longitude_MAX >= v_lng
and STR_TO_DATE(Date, '%m/%d/%Y') = v_date
AND pkid = v_pkid;