2013-06-20 6 views
-1

Предположим, что у меня есть таблица с 7 колонки: sun, mon, tue и т.д ...Обновление столбца MySQL таблицы на основе значения

У меня есть ряд со всеми 0, и мне нужно обновить столбцы с помощью dayofWeek(now()).

мне нужно обновить sun=1, если функции возвращают 1, mon=1 если функция возвращает 2, и т.д.

+0

Okay. Я предположил. Что теперь? – eggyal

+0

Я даже не предполагал, поскольку я не могу разобрать третье предложение «у меня». –

ответ

2

Вы можете использовать запрос, как это:

UPDATE yourtable 
SET 
    sun=(dayofWeek(now()) = 1), 
    mon=(dayofWeek(now()) = 2), 
    tue=(dayofWeek(now()) = 3), 
    ... 
WHERE 
    id=something 

Пожалуйста, смотрите скрипку here.

Если вы не хотите, чтобы изменить фактическое значение, вы могли бы использовать что-то вроде этого:

UPDATE yourtable 
SET 
    sun=CASE WHEN dayofWeek(now()) = 1 THEN 1 ELSE sun END, 
    mon=CASE WHEN dayofWeek(now()) = 2 THEN 1 ELSE mon END, 
    tue=CASE WHEN dayofWeek(now()) = 3 THEN 1 ELSE tue END, 
    ... 
+0

Спасибо, но мой главный мотив вопроса заключается в том, чтобы получить что-то вроде этого select @ day = dayofWeek (now()), а затем мы можем иметь что-то вроде случая обновления (@ день == 1), а затем установить sun = 1 case (@day == 2), то установите mon = 2 –

+0

@AshishMohan, если я правильно понял, мой второй запрос должен быть тем, что вам нужно, просто измените '... THEN 1 ELSE ...' на 'THEN 2 ...', ' THEN 3 ... 'и т. Д. Он обновит столбец текущего дня, и он оставит все остальные столбцы без изменений – fthiella