MySQL(MyISAM) - 서로 다른 테이블의 두 필드 중 가장 큰 필드로 필드 업데이트

StackOverflow https://stackoverflow.com/questions/3268588

  •  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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top