mysql中update语句的多列子查询

时间:2014-03-22 09:18:42

标签: mysql sql subquery

我有以下更新声明

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上有一些例子,但是这些连接两个表并没有这样的连接。

1 个答案:

答案 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;