一条insert into语句只应该有一个VALUES
你就不怕把自已弄晕啊,也只不过是多打几个字而已

解决方案 »

  1.   

    不可能放多个value
    要放入多条数据可以用
    insert into tab_name1(col1,col2,col3...)
    select col1,col2,col3...
    from tab_name2
    where ...;
      

  2.   

    如果是多条记录的话用
    insert into table_name
    select ...
    from table_name2
    where ....
      

  3.   

    zhaokeke2004(大力)的方法是可以的!
      

  4.   

    一看就知道是有很多值要插入到一个表里.
    最笨的办法
    用 insert into tablename (col1,col2,...)
       select * from (
       select 'a1','a2',... from dual union all
       select 'a1','a2',... from dual union all
       select 'a1','a2',... from dual union all
       ...)要用ultraedit 编辑成SQL
      

  5.   

    insert into tab_name1(col1,col2,col3...)
    select col1,col2,col3...
    from tab_name2
    where ...;-------------------------------------------
    INSERT ALL
        INTO SAL_HISTORY(empno, hire_date, sal) VALUES( empid, hiredate, sal )
    INTO MGR_HISTORY(employee_id, mgr, salary) VALUES( empid, mgr, sal )
    SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGR
      FROM EMPLOYEES
     WHERE employee_id > 200;
    ------------------------------------------
    INSERT ALL
        WHEN sal > 10000 THEN
            INTO SAL_HISTORY(empno, hire_date, sal) VALUES( empid, hiredate, sal )
        WHEN mgr > 200 THEN
         INTO MGR_HISTORY(employee_id, mgr, salary) VALUES( empid, mgr, sal )
    SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGR
      FROM EMPLOYEES
     WHERE employee_id > 200; 
    -------------------------------------
    INSERT FIRST
        WHEN sal > 25000 THEN
        INTO SPECIAL_SAL VALUES(deptid, sal)
    WHEN HIREDATE LIKE ('%00%') THEN
        INTO HIREDATE_HISTORY_00 VALUES(deptid, hiredate)
    WHEN HIREDATE LIKE ('%99%') THEN
        INTO HIREDATE_HISTORY_99 VALUES(deptid, hiredate)
    ELSE
        INTO HIREDATE_HISTORY VALUES(deptid, hiredate)
    SELECT department_id deptid, SUM(salary) sal, MAX(hire_date) hiredate
      FROM EMPLOYEES
      GROUP BY department_id; 
    ------------------------------INSERT ALL
        INTO SALES_INFO VALUES( employee_id, week_id, sales_mon)
        INTO SALES_INFO VALUES( employee_id, week_id, sales_tue)
    INTO SALES_INFO VALUES( employee_id, week_id, sales_wed)
    INTO SALES_INFO VALUES( employee_id, week_id, sales_thur)
    INTO SALES_INFO VALUES( employee_id, week_id, sales_fri)
        SELECT employee_id, week_id, sales_mon, sales_tue, sales_wed, sales_thur, sales_fri
      FROM SALES_SOURCE_DATA;
      

  6.   

    我献丑下:
    1.如果用insert into table_name values (field_name1,field_name2,field_name3)这个命令的话,每次只能插入一条记录.
    2.insert into table_name1 select field_name1,field_name2 from table_name2 where +条件;用这个命令,可以从已存在的表table_name2中选择多条符合where 条件的记录一次性地插入table_name1表中.
      

  7.   

    我说的,是新插入数据。上面zmgowin(隐者(龙祖宗)) 提到这个。呵呵,看来我没有记错。应该有那么一种数据库。是db2?等我去看看标准sql有没有这个。
      

  8.   

    红蜘蛛的方法是在oracle9i中新加入的,应该能满足你的要求,除了insert all 以外还有一个insert first,他们的区别是:insert all 会执行所有满足条件的插入;而insert first 只象满足条件的第一个when语句中插入数据
      

  9.   

    insert into table_1 (id,name)
    select '1','w'
    union 
    select '2','z'
    union 
    ...........
    ..........
      

  10.   

    反正oracle是支持将结果集插入到对象中
      

  11.   

    如果是插入新值的话,oralce是不支持的,标准sql也不支持
      

  12.   

    db2或许会支持楼主的语法。但这个语法肯定不是sql标准语法,更不是oracle不支持的语法。
      

  13.   

    版主说的很对,是有这样的数据库,不过不是厂商提供的软件,这样的软件很多,如果你是用的ORACLER的话,我给你这样一个工具,你可以用GOOGLE搜一下,很常用的在很多大公司都用这个建立ORACLE数据库,我有时也用,不过我更加倾向于手动建立。
    PL/SQL Developer,这个工具就可以满足你的要求
      

  14.   

    如果表t1和t2中列col1是一样的定义。
    用 insert into t1(col1)
      select col1 from t2 where ...(条件.)
    符合条件的t2中记录就算有一亿条, 也是会插入到t1的
      

  15.   

    在.net那边一个兄弟问,如何执行一个查询插入n个记录。有人给出n个insert into……;连接在一起。我忽然想起多个values的用法。只是讨论下,证实下自己的感觉。