Обновить поле, когда оно не пустое

Я полагаю, что по той же причине, что и не компилируется:

short s1 = GetShort1();
short s2 = GetShort2();
short s3 = s1 + s2;

I.e. что всякий раз, когда короткий используется для чего-то, он получает повышение до int.

13
задан Juan Mellado 1 May 2012 в 14:42
поделиться

5 ответов

Сделайте следующее:

UPDATE newspapers
SET scan_notes = "data",    
  scan_entered_by = "some_name",    
  scan_modified_date = "current_unix_timestamp",
  scan_created_date = COALESCE(scan_created_date, "current_unix_timestamp")
WHERE id = X

Функция COALESCE выбирает первое ненулевое значение. В этом случае он обновит метку даты scan_created_date, чтобы она была такой же, если она существует, иначе потребуется все, что вы замените "current_unix_timestamp" на.

33
ответ дан 1 December 2019 в 17:51
поделиться

Я думаю, что вы ищете IF ()

UPDATE newspapers
SET scan_notes = "data",
    scan_entered_by = "some_name",
    scan_modified_date = "current_unix_timestamp",
    scan_created_date = IF(scan_created_date IS NOT NULL, "current_unix_timestamp", NULL)
WHERE id = X
5
ответ дан 1 December 2019 в 17:51
поделиться

mySQL имеет функцию IFNULL , поэтому вы можете:

UPDATE newspapers
SET scan_notes = "data",
    scan_entered_by = "some_name",
    scan_modified_date = "current_unix_timestamp"
    scan_created_date = IFNULL( scan_created_date, "current_unix_timestamp" )
WHERE id = X
4
ответ дан 1 December 2019 в 17:51
поделиться

Вы можете использовать COALESCE (), который возвращает первое значение NON-NULL):

scan_created_date = COALESCE(scan_created_date, "current_unix_timestamp")
2
ответ дан 1 December 2019 в 17:51
поделиться

Вы можете сделать что-то вроде этого:

UPDATE newspapers a, newspapers b
SET a.scan_notes = "data",    
  a.scan_entered_by = "some_name",    
  a.scan_modified_date = "current_unix_timestamp",
  b.scan_created_date = "current_unix_timestamp"
WHERE a.id = X AND b.id = X AND b.scan_created_date is not NULL
2
ответ дан 1 December 2019 в 17:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: