2011-10-11 61 views
0

我試圖做從SELECTUPDATEthis SO thread更新與計算

它不工作中給出的格式。我想知道是否因爲我在執行計算時需要不同的UPDATE ... SELECT結構。

我試過的下列各種版本:

 UPDATE tbl_usertime uat 
      SET uat.delay_qual = (TIMESTAMPDIFF(MINUTE, uat.view_date, '2011-10-11 15:22:25') > adt.delay), 
      freq_qual = (adt.frequency > uat.imps_today) 
     FROM tbl_timing adt 
     JOIN tbl_usertime uat 
      ON uat.ad_id = adt.ad_id; 

...但它在SQL語法錯誤...近 '返回從tbl_timing ADT JOIN tbl_usertime UAT'

任何想法? 謝謝!

+0

'FROM'在更新查詢中無效,只有'select'。 –

+1

@MarcB他從Sql Server線程複製,這是有效的Sql Server語法。 – Icarus

+0

@ Icarus:是的,如果更新查詢包含select子查詢。 OP的代碼片段沒有。 'update'查詢不以任何形式或形式支持'from',因爲它不是SQL語言規範的一部分。 –

回答

2

MySQL的語法是有點不同,試試這個:

update tbl_usertime uat join tbl_timing adt on uat.ad_id=adt.ad_id set 
    uat.delay_qual = (TIMESTAMPDIFF(MINUTE, uat.view_date, '2011-10-11 15:22:25') > adt.delay), 
     freq_qual = (adt.frequency > uat.imps_today) 
+0

真棒謝謝,這很好! – Kyle

1

我不知道它會工作,但閱讀MySQL的文檔給我的感覺,可能是有效的:

UPDATE tbl_usertime join tbl_timing 
SET tbl_usertime.delay_qual = (TIMESTAMPDIFF(MINUTE, tbl_usertime.view_date, '2011-10-11 15:22:25') > tbl_timing.delay), 
    freq_qual = (tbl_timing.frequency > tbl_usertime.imps_today) 
where 
tbl_usertime.ad_id = tbl_timing.ad_id; 
+0

** tbl_timing **在哪裏?檢查你的答案... – AJC

+0

@AJC謝謝!固定。已經忘記了JOIN。 – Icarus

+0

+1可能很好。當jon被修復時,他正在使用Xint0的答案。 – Kyle