2013-12-14 93 views
1

我想通过采取max(date) and min(Date) from Table2仅当table1.status=100table1.Todate='0000-00-00 00:00:00' 同样的事情,我有以下查询试图更新table1的,但它是由如何使用select查询在mysql中编写更新语句?

update table1 s 
left join table2 t 
on s.stCode=t.tsTask 
set s.stActFrom= min(t.tsDate),s.stActTo=max(t.tsDate) 
WHERE s.stActTo='0000-00-00 00:00:00' and s.stStatus=100 
group by t.`tsTask` 

给组错误,如果我执行这个查询我收到以下错误。 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group by t. tsTask ' at line 1

任何人都可以告诉我如何编写此更新查询吗?

回答

0

我试过上面的答案。这不是我所需的答案。所以我从下面的查询中得到了答案。

update table1 s left join 
        (
        SELECT min(tsDate) AS MinDates, max(tsDate) AS MaxDates, tsTask 
        FROM table2 
        group by `tsTask` 
        ) AS t ON s.stCode=t.tsTask 
    set s.stActFrom= t.MinDate, 
    s.stActTo = t.MaxDate  
    WHERE s.stActTo='0000-00-00 00:00:00' and s.stStatus=100 
0
update s 
set s.stActFrom= t.MinDate, 
    s.stActTo = t.MaxDate 
FROM table1 s left join 
         (
         SELECT MinDate = min(tsDate), MaxDate = max(tsDate) 
         FROM table2 
         group by `tsTask` 
         ) AS t 
WHERE s.stActTo='0000-00-00 00:00:00' and s.stStatus=100 
ON s.stCode=t.tsTask 
+0

我编辑了您的查询,它工作正常。我会接受这个答案。 – Raghuveera

+0

@Raghuveera:停止尝试编辑答案中给出的查询。如果另一个查询对您更好,请编辑您的问题并说“我最终使用了这样的”,然后将更正后的查询放在那里。 –

+0

好吧,我会做同样的事情。我能编辑一个吗? – Raghuveera

相关问题