求高手写个sql实现两个表的数据的迁移。
时间:2011-11-02
来源:互联网
有如下2张表,A(id,ip,port) B(id,ip,port1,port2)
A中的数据都是相同的一个ip对应2个port。如:
1,10.10.10.10,8090
2,10.10.10.10,8091
3,10.10.10.20,8092
4,10.10.10.20,8093
现在需要将表A中的数据转移到表B中,将ip相同的数据合并成一条数据,即入到表B中的数据只有2条。
1,10.10.10.10,8090,8091
3,10.10.10.20,8092,8093
请求这个sql如何写啊?万分感谢啊
A中的数据都是相同的一个ip对应2个port。如:
1,10.10.10.10,8090
2,10.10.10.10,8091
3,10.10.10.20,8092
4,10.10.10.20,8093
现在需要将表A中的数据转移到表B中,将ip相同的数据合并成一条数据,即入到表B中的数据只有2条。
1,10.10.10.10,8090,8091
3,10.10.10.20,8092,8093
请求这个sql如何写啊?万分感谢啊
作者: guwen391 发布时间: 2011-11-02
Oracle10g或以上可以用这句
INSERT INTO B (id,
ip,
port1,
port2)
SELECT ROWNUM id,
ip,
SUBSTR (port, 1, INSTR (port, ',') - 1) port1,
SUBSTR (port, INSTR (port, ',') + 1) port2
FROM ( SELECT ip, wm_concat (port) port
FROM a
GROUP BY ip)
INSERT INTO B (id,
ip,
port1,
port2)
SELECT ROWNUM id,
ip,
SUBSTR (port, 1, INSTR (port, ',') - 1) port1,
SUBSTR (port, INSTR (port, ',') + 1) port2
FROM ( SELECT ip, wm_concat (port) port
FROM a
GROUP BY ip)
作者: tx2730 发布时间: 2011-11-02
忘记保留原来的ID
INSERT INTO B (id,
ip,
port1,
port2)
SELECT id,
ip,
SUBSTR (port, 1, INSTR (port, ',') - 1) port1,
SUBSTR (port, INSTR (port, ',') + 1) port2
FROM ( SELECT MIN (id) id, ip, wm_concat (port) port
FROM a
GROUP BY ip)
INSERT INTO B (id,
ip,
port1,
port2)
SELECT id,
ip,
SUBSTR (port, 1, INSTR (port, ',') - 1) port1,
SUBSTR (port, INSTR (port, ',') + 1) port2
FROM ( SELECT MIN (id) id, ip, wm_concat (port) port
FROM a
GROUP BY ip)
作者: tx2730 发布时间: 2011-11-02
SQL code
INSERT INTO B_TBL SELECT MIN(ID), IP, MIN(PART) PART1, CASE WHEN MAX(PART) = MIN(PART) THEN NULL ELSE MAX(PART) END PART2 FROM A_TBL GROUP BY IP; --B_TBL是你的B表 --A_TBL是你的A表 INSERT INTO B_TBL SELECT MIN(ID), IP, MIN(PART) PART1, CASE WHEN MAX(PART) = MIN(PART) THEN NULL ELSE MAX(PART) END PART2 FROM A_TBL GROUP BY IP;
作者: yinan9 发布时间: 2011-11-02
SQL> SELECT * FROM b_tbl;
ID IP PART1 PART2
---------- -------------------------------------------------- -------------------------------------------------- --------------------------------------------------
1 10.10.10.10 8090 8091
3 10.10.10.20 8092 8093
1 10.10.10.10 8090 8091
3 10.10.10.20 8092 8093
ID IP PART1 PART2
---------- -------------------------------------------------- -------------------------------------------------- --------------------------------------------------
1 10.10.10.10 8090 8091
3 10.10.10.20 8092 8093
1 10.10.10.10 8090 8091
3 10.10.10.20 8092 8093
作者: yinan9 发布时间: 2011-11-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28