我有一个表是这样的
table1
id date
1 05/04
2 05/05table2
number id date other
1 1 05/04 2
2 2 05/05 3
3 1 05/06 5
4 2 05/07 1我要根据table2的id来更新table1中的date,table2每天更新,
但我写的sql语句执行后,table1的date永远是最早的日期,
比如: 现在执行更新后table1应该为table1
id date
1 05/06
2 05/07
但现在不能更新,更新完了还是
table1
id date
1 05/04
2 05/05
我的更新语句是这样的
UPDATE tabel1 INNER JOIN table2 ON table1.id = table2.id
SET table1.date = table2.date ;请大家指点一下,我该怎样改写我的更新语句。谢谢!
table1
id date
1 05/04
2 05/05table2
number id date other
1 1 05/04 2
2 2 05/05 3
3 1 05/06 5
4 2 05/07 1我要根据table2的id来更新table1中的date,table2每天更新,
但我写的sql语句执行后,table1的date永远是最早的日期,
比如: 现在执行更新后table1应该为table1
id date
1 05/06
2 05/07
但现在不能更新,更新完了还是
table1
id date
1 05/04
2 05/05
我的更新语句是这样的
UPDATE tabel1 INNER JOIN table2 ON table1.id = table2.id
SET table1.date = table2.date ;请大家指点一下,我该怎样改写我的更新语句。谢谢!
SELECT DISTINCT id,MAX(date)AS MAXDATE FROM TABLE2;
VID TABLE1.ID%TYPE;
VMAXDATE TABLE1.date%TYPE;
OPEN C_2;
LOOP
FETCH C_2 INTO VID,VMAXDATE;
EXIT WHEN C_2%NOTFOUND;
BEGIN
UPDATE TABLE1 SET DATE=VMAXDATE WHERE ID=VID;
END;
END LOOP;
CLOSE C_2;
CURSOR C_2 IS
SELECT DISTINCT id,MAX(date)AS MAXDATE FROM TABLE2 GROUP BY ID;
VID TABLE1.ID%TYPE;
VMAXDATE TABLE1.date%TYPE;
OPEN C_2;
LOOP
FETCH C_2 INTO VID,VMAXDATE;
EXIT WHEN C_2%NOTFOUND;
BEGIN
UPDATE TABLE1 SET DATE=VMAXDATE WHERE ID=VID;
END;
END LOOP;
CLOSE C_2;
比如 number id date other
1 1 12/31 2
2 1 01/01 3
应该取01/01 ,不是12/31