MySQL(MyISAM) - 서로 다른 테이블의 두 필드 중 가장 큰 필드로 필드 업데이트
-
16-09-2020 - |
문제
테이블이 두 개 있는데, t1
그리고 t2
각각 두 개의 열이 있습니다 - id_user
그리고 age
.
어떻게 업데이트하나요? t1.age
가장 큰 것 t1.age
그리고 t2.age
신분증 매칭하고 나가기 위해 t1.age
일치하는 ID가 없으면 변경되지 않습니다. t2
.
업데이트 전:
t1 +-------+---+ |id_user|age| +-------+---+ | 1| 5| +-------+---+ | 2| 10| +-------+---+ | 3| 10| +-------+---+ t2 +-------+---+ |id_user|age| +-------+---+ | 2| 12| +-------+---+ | 3| 8| +-------+---+ | 4| 20| +-------+---+
업데이트 후:
t1 +-------+---+ |id_user|age| +-------+---+ | 1| 5| +-------+---+ | 2| 12| +-------+---+ | 3| 10| +-------+---+
해결책
다음을 시도해 볼 수도 있습니다.
UPDATE t1
JOIN t2 ON (t2.id_user = t1.id_user)
SET t1.age = t2.age
WHERE t2.age > t1.age;
테스트 사례:
CREATE TABLE t1 (id_user int, age int);
CREATE TABLE t2 (id_user int, age int);
INSERT INTO t1 VALUES (1, 5);
INSERT INTO t1 VALUES (2, 10);
INSERT INTO t1 VALUES (3, 10);
INSERT INTO t2 VALUES (2, 12);
INSERT INTO t2 VALUES (3, 8);
INSERT INTO t2 VALUES (4, 20);
결과:
SELECT * FROM t1;
+---------+------+
| id_user | age |
+---------+------+
| 1 | 5 |
| 2 | 12 |
| 3 | 10 |
+---------+------+
3 rows in set (0.00 sec)
다른 팁
UPDATE t1
SET age = T2.age
FROM t1
INNER JOIN t2
ON t2.id_user = t1.id_user
WHERE t2.age > t1.age
제휴하지 않습니다 StackOverflow