2

2 つのテーブルがt1あり、t2それぞれに 2 つの列があります -id_userage. に一致する IDがない場合、一致する ID の最大のものに更新し、変更しないままにする方法
を教えてください。t1.aget1.aget2.aget1.aget2

更新前:

t1  
+------+---+   
|id_user|年齢|  
+------+---+   
| | 1| 5|  
+------+---+   
| | 2| 10|  
+------+---+   
| | 3| 10|  
+------+---+   

t2
+------+---+   
|id_user|年齢|  
+------+---+   
| | 2| 12|  
+------+---+   
| | 3| 8|  
+------+---+   
| | 4| 20|  
+------+---+   

更新後:

t1  
+------+---+   
|id_user|年齢|  
+------+---+   
| | 1| 5|  
+------+---+   
| | 2| 12|  
+------+---+   
| | 3| 10|  
+------+---+   
4

2 に答える 2

2

あなたは試してみたいかもしれません:

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)
于 2010-07-16T20:29:02.437 に答える
0
UPDATE t1
SET age = T2.age
FROM t1
INNER JOIN t2
ON t2.id_user = t1.id_user
WHERE t2.age > t1.age
于 2010-07-16T20:25:33.730 に答える