programing

설정 IF NULL 또는 기타 값의 MySQL Update 필드

css3 2023. 11. 6. 21:58

설정 IF NULL 또는 기타 값의 MySQL Update 필드

현재 두 개의 업데이트 쿼리를 사용하고 있는데 하나로 줄일 수 있는 방법이 있는지 궁금합니다.

field1 OFTYPE INT
field2 OFTYPE DATETIME
field3 OFTYPE DATETIME

UPDATE `Table1` SET `field1` = `field1` + 1, `field2` = NOW() WHERE `id` = $id;
UPDATE `Table1` SET `field3` = NOW() WHERE `id` = $id AND (`field3` < '2011-00-00 00:00:00' OR `field3` IS NULL);

다음과 같이 UPDATE를 수행할 수 있는 쿼리를 구하려고 합니다.

UPDATE `Table1` 
SET `field1` = `field1` + 1,
    `field2` = NOW(),
    `field3` = ISNULL(NOW(), `first_seen`);

IF 문을 사용하여 이 작업을 수행하는 것이 가능하다고 생각합니다.IF 문을 사용할 때 식, true이면 값, false이면 값, false이면 값의 세 가지 매개 변수를 사용합니다.

따라서 귀하의 경우 다음과 같이 한 번에 쿼리를 작성할 수 있습니다.

UPDATE Table1 
SET 
    field1 = field1 + 1, 
    field2 = NOW(),
    field3 = IF(field3 < '2011-00-00 00:00:00' OR field3 IS NULL, NOW(), field3)
WHERE id = $id;

이런 식으로 표현이 사실이라면,field3될 것이다NOW()그렇지 않으면 원래대로 남을 겁니다

당신의 경우에는 당신이 사용할 수 있습니다.CASE*:

UPDATE Table1
SET field1 = field1 + 1,
  field2 = NOW(),
  field3 =
        CASE
        WHEN field3 < '2011-00-00 00:00:00' THEN /* Evaluates to false if NULL */
          NOW()
        WHEN field3 IS NULL THEN
          NOW()
        ELSE /* Don't change */
          field3
        END
WHERE id = 1

*펀 옵션

이렇게 하면 됩니다.

UPDATE `Table1` 
SET `field1` = `field1` + 1,
    `field2` = NOW(),
    `field3` = COALESCE(field3, NOW())
WHERE id = 1;

이렇게 하면 모든 field1 및 field2가 업데이트되고 field3이 null이면 null이 아니면 원래 상태로 유지됩니다.하지만 이것은 NULL에서만 작동합니다!!!

한다면field3와는 다른 조건으로 업데이트되어야 합니다.field1그리고.field2, 하나의 쿼리로 모든 것을 할 수는 없다고 생각합니다.쿼리를 함께 실행하거나 아무것도 실행하지 않으면 트랜잭션을 수행할 수 있습니다.

언급URL : https://stackoverflow.com/questions/9691138/mysql-update-field-of-set-if-null-or-other-value