-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

2 番目の値のターゲット列がありません。

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 に答える