2013-12-14 123 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

相關問題