2016-12-20 2 views
0

그럼 A, B, C 열이 있다고합시다. 중복 키에서 A = {여기에 몇 가지 설명}, B = {여기에 몇 가지 설명}, C = New_A + New_B라고 가정 해 봅시다. C의 새로운 값을 결정하기 위해 A와 B의 새로운 값을 사용할 수 있습니까? 아니면 새로운 A와 B의 표현을 다시 입력해야합니까? 감사!중복 키 업데이트시 업데이트 값을 재사용 할 수 있습니까?

답변

1

나는 그렇게 할 수 있다고 생각합니다. 당신이 할 경우

ON DUPLICATE KEY UPDATE 
    A = A + 1, B = B * 2, 
    C = A + B 

을 나는 업데이트가 왼쪽에서 오른쪽으로 실행됩니다 생각합니다. 따라서 C = A + B이되면 AB에 새 값이 포함됩니다.

+0

아, 작동하는 것 같습니다. 편리하고 논리적 인 덕분입니다! – zojwek

+0

''VALUES (A) + VALUES (B)'는 ['VALUES()'함수 (http://dev.mysql.com/doc/refman/5.7/en/) 이후로 좀 더 결정 론적입니다. miscellaneous-functions.html # function_values)는 새로운 값을 제공하는 반면, 왼쪽에서 오른쪽으로 동작하면 운 좋은 사고가 발생합니다. 표준 SQL에서 'UPDATE t1 SET b = a, a = b'는 a와 b의 값을 변환하지만, MySQL에서는'old a '가 아니라'new b '값을 취하기 때문에 양쪽 모두를 a로 설정합니다 할당 연산자의 오른쪽. 쿼리와 코드 나누기의 순서를 변경하십시오. –

+0

@ Michael-sqlbot'VALUES()'함수는 중복이 없으면 컬럼에 삽입 될 값을 선택하고, UPDATE 절에서 새로운 값을 가져 오지 않습니다. – Barmar

관련 문제