programing

MySQL: int 필드의 값을 전환하는 간단한 방법

goodsources 2023. 1. 13. 19:54
반응형

MySQL: int 필드의 값을 전환하는 간단한 방법

어떻게 하는지는 알지만, 더블 셀렉트 같은 걸로 너무 복잡하게 만들 것 같아요.

이를 수행하려면 어떻게 해야 합니까(pseudo-sql의 예)

UPDATE some_table SET an_int_value = (an_int_value==1 ? 0 : 1);

다른 기능에 의한 int 값이어야 합니다만, 어떻게 하면 간단하게 할 수 있을까요?

UPDATE table SET field = 1 - field
UPDATE some_table SET an_int_value = IF(an_int_value=1, 0, 1);

http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_if

UPDATE some_table SET an_int_value = IF(an_int_value=1, 0, 1)

이 경우 XOR 타입의 연산을 사용할 수 있습니다.

UPDATE some_table SET an_int_value = an_int_value XOR 1

이것은 an_int_value가 항상 1 또는0이라고 가정하고 있습니다.

모든 경험자의 답변을 볼 수 있고, 저도 그들의 답변에 업데이트 되었습니다.

이건 어때...이렇게 하면...

UPDATE tablename SET fieldname = not fieldname

이것이 실현 가능한 해결책이 아닐 경우 어떤 단체라도 제안을 할 수 있다.실행 속도나 다른...뭐랄까...사실...컨셉...

다른 옵션:

UPDATE some_table SET an_int_value = ABS(an_int_value - 1);

TINYINT(0 및 1)를 사용하고 있는 경우는, 간단하게 XOR(https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html#operator_xor))를 실행합니다.

UPDATE
    `some_table`
SET
    `an_int_value` = `an_int_value` ^ 1

테스트:

SELECT 0 ^ 1; /*는 1 */을 반환합니다.

SELECT 1 ^ 1; /*는 0 */을 반환합니다.

ENUM(0,1) 필드의 경우 다음을 사용할 수 있습니다.

UPDATE 테이블 SET int_value=BINARY(int_value=1)

ENUM(0,1)의 경우 some_table SET an_int_value = IF(an_int_value='1', '0', '1');

언급URL : https://stackoverflow.com/questions/603835/mysql-simple-way-to-toggle-a-value-of-an-int-field

반응형