-1
UPDATE a_timeblock SET timeblock_due_date=DATE(timeblock_next_update), 
CASE timeblock_recurrence_unit
 WHEN day THEN
       DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time  day ) 
 WHEN month THEN
       DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time  month) 
  END

 WHERE timeblock_recurrence=1 AND timeblock_complete=0 AND timeblock_next_update=    
 FROM_UNIXTIME(1337662800)

上面的查询是错误的。我想做类似上面的事情。如果可能的话,我该怎么做。

#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 
'CASE timeblock_recurrence_unit WHEN 'day' THEN DATE_ADD(NOW(),IN' at line 2
4

3 回答 3

1

您的第二个值没有目标列。

UPDATE a_timeblock
SET timeblock_due_date = DATE(timeblock_next_update), 
    column_name?       = CASE ... END
WHERE ...
于 2012-05-22T20:08:54.053 回答
0

我认为您需要在案例中的值周围使用引号并简单地 SET timeblock_due_date

...
SET timeblock_due_date =
CASE timeblock_recurrence_unit
  WHEN 'day' THEN
       DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time  day ) 
  WHEN 'month' THEN
       DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time  month) 
END
...

这假设timeblock_recurrence_unit是一个VARCHAR类型(它需要是)

于 2012-05-22T20:07:27.947 回答
0

可能是这样的?

UPDATE a_timeblock SET timeblock_due_date=
CASE timeblock_recurrence_unit
 WHEN 'day' THEN
       DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time  day ) 
 WHEN 'month' THEN
       DATE_ADD(NOW(),INTERVAL timeblock_recurrence_time  month) 
  END

 WHERE timeblock_recurrence=1 AND timeblock_complete=0 AND timeblock_next_update=    
 FROM_UNIXTIME(1337662800)
于 2012-05-22T20:08:49.723 回答