有两个表,表A和表B.
表A是用户表。
表B是待办表。
现要对A的所有用户在B表插入一列数据,也就是说A的所有用户在B表都产生一条待办数据。
A和B通过username对应。即A表username对应B表username该SQL实现,执行一次直接批量产生A表的所有用户加一条待办数据。试了差不多有20分钟了,失败,高手帮帮忙。

解决方案 »

  1.   


    比如,表A有张三,李四,王五,黄瓜四个用户.username就是张三,李四,王五,黄瓜四.
    现在要写个SQL,直接往B写对应的四条数据.就用username关联,假如B表有B1,B2,B3,B4,B5有列.其中B1是自动产生的数字ID,B2为待办标题,我们这次要给的值为test007,B3为username,B4为URL,这里给http:xxx.xxx.xx.xxx,B5为创建时间,这里给它 2011-05-11 pm 07:00:00二楼这样是否可以?
      

  2.   

    不具体,失败什么错误。。
    具体的SQL贴出来
      

  3.   

    哦,是要看我具体的尝试?
    我是这样试.先
    select 'insert into B (ID, MAIN_DOC_ID, USERNAME, URL, DB_ID, TITLE, FLOW_NAME, CURR_NODE, PREV_NODE, PREV_USERNAME, AUTHOR, UNIT, 
    CREATED_TIME, START_TIME, REQUEST_TIME, END_TIME, LIMIT_TIME, LIMIT_HOUR, LIMIT_MINUTE, CHECKED, PRESS_NO, PRESS_START_DATE, 
    PRESS_END_DATE, DEST_UNIT, INST_DEG, CITY_ID, USER_ID, OPINION, HIS_NODE, FACT_TIME, WARN_TIME)values (0, 4825720300044AAA482577CF00232F4B, '||USERNAME||', http://test.yntel.com, 900000103, 测试, 50050002, 主办, 部门领导, 肖/test, 管理员, 综合部,2010-11-2 PM 02:24:18, 2010-11-3 PM 05:19:30, REQUEST_TIME, END_TIME, 1, 30, 30, 0, 0, 0,0, 0, 0, 1, USER_ID,0 ,0 , 0,) ' from A; 然后把结果拿到程序窗口执行.批量前先试只拿一条执行,拿出来的是这样的
    insert into B (ID, MAIN_DOC_ID, USERNAME, URL, DB_ID, TITLE, FLOW_NAME, CURR_NODE, PREV_NODE, PREV_USERNAME, AUTHOR, UNIT,CREATED_TIME, START_TIME, REQUEST_TIME, END_TIME, LIMIT_TIME, LIMIT_HOUR, LIMIT_MINUTE, CHECKED, PRESS_NO, PRESS_START_DATE,
    PRESS_END_DATE, DEST_UNIT, INST_DEG, CITY_ID, USER_ID, OPINION, HIS_NODE, FACT_TIME, WARN_TIME)values (0, 4825720300044AAA482577CF00232F4B, kmgdqdxfgsws, http://test.aa.com, 900000103, 测试, 50050002, 主办, 部门领导, 肖/YNTtest, 管理员, 综合部,2010-11-2 PM 02:24:18, 2010-11-3 PM 05:19:30, REQUEST_TIME, END_TIME, 1, 30, 30, 0, 0, 0,0, 0, 0, 1, USER_ID,0 ,0 , 0, 0)
    执行的时候,总是报右括号未正常结束
     
      

  4.   

    其实就先通过select,把所有的username得出结果来,然后手工COPY到command.windows下执行.
    现在是单取一条去执行就失败了.
    丢人啊
      

  5.   

    不知道这样做能不能实现你的要求
    update b set (b.colunm1,b.column2..)=(select a.colunm,a.column.. from a where a.username=b.username)
    其中column1..2是你要填充的列
      

  6.   

    不能用update,之内用insert,update
      

  7.   

    写个PL/SQL吧比如:
    begin
    for()
    loop
    ……
    end loop;
    end;