insert语句分析
我在一个连接db2的.net程序里抽取了一个sql语句,看不懂,兄妹们帮忙分析一下语法,insert into .. with .. as ..看不懂,谢谢!
第一个insert:
INSERT INTO PF.T_ANALYSE_NODE(NODEID, SID) WITH TOPO (ID, PAPERID, ROOTDEVID, ORDER_NUM, FS_ID, TS_ID, FNODE_DEV_ID, TNODE_DEV_ID) AS (SELECT ID, PAPERID, ROOTDEVID, ORDER_NUM, FS_ID, TS_ID, FNODE_DEV_ID, TNODE_DEV_ID FROM PF.T_POWER_TOPO WHERE FNODE_DEV_ID = ? AND FS_ID = ? AND PAPERID = ? AND TS_ID IS NULL UNION ALL SELECT CHILD.ID, CHILD.PAPERID, CHILD.ROOTDEVID, CHILD.ORDER_NUM, CHILD.FS_ID, CHILD.TS_ID, CHILD.FNODE_DEV_ID, CHILD.TNODE_DEV_ID FROM TOPO PARENT , PF.T_POWER_TOPO CHILD WHERE PARENT.TNODE_DEV_ID=CHILD.FNODE_DEV_ID AND CHILD.PAPERID = ? AND CHILD.TS_ID IS NULL)SELECT 6226, T.TNODE_DEV_ID FROM TOPO T
INSERT INTO PF.T_ANALYSE_TOPO(NODEID, SID, POWERID, STATUS, SUBSID, TERMINALID) WITH TOPO (ID, PAPERID, ROOTDEVID, ORDER_NUM, FS_ID, TS_ID, FNODE_DEV_ID, TNODE_DEV_ID) AS (SELECT ID, PAPERID, ROOTDEVID, ORDER_NUM, FS_ID, TS_ID, FNODE_DEV_ID, TNODE_DEV_ID FROM PF.T_POWER_TOPO WHERE FNODE_DEV_ID = ? AND FS_ID = ? AND PAPERID = ? AND TS_ID IS NULL UNION ALL SELECT CHILD.ID, CHILD.PAPERID, CHILD.ROOTDEVID, CHILD.ORDER_NUM, CHILD.FS_ID, CHILD.TS_ID, CHILD.FNODE_DEV_ID, CHILD.TNODE_DEV_ID FROM TOPO PARENT , PF.T_POWER_TOPO CHILD WHERE PARENT.TNODE_DEV_ID=CHILD.FNODE_DEV_ID AND CHILD.PAPERID = ? AND CHILD.TS_ID IS NULL) SELECT 6226, T2.TNODE_DEV_ID, 0, T2.TNODE_STATUS_TYPE, 0, T2.TS_ID FROM TOPO T1 JOIN PF.T_POWER_TOPO T2 ON (T1.TNODE_DEV_ID = T2.FNODE_DEV_ID AND T1.PAPERID = T2.PAPERID AND T2.TS_ID IS NOT NULL) UNION ALL SELECT 6226, T3.TNODE_DEV_ID, 0, T3.TNODE_STATUS_TYPE, 0, T3.TS_ID FROM PF.T_POWER_TOPO T3 WHERE T3.FNODE_DEV_ID = ? AND T3.FS_ID = ? AND T3.PAPERID = ? AND T3.TS_ID IS NOT NULL UNION ALL SELECT DISTINCT 6226, T4.FNODE_DEV_ID, 0, T4.FNODE_STATUS_TYPE, 0, T4.FS_ID FROM PF.T_POWER_TOPO T4 WHERE T4.FNODE_DEV_ID = ? AND T4.FS_ID = ? AND T4.PAPERID = ?