下面哪四个可以用a subquery 
1 in the into clause of an insert statement
2 in the from clause of a select statement
3 in the group by clause of a select statement
4 in the where clause of a select statement
5 in the set clause of a update statement
6 in the values clause of an insert statement

解决方案 »

  1.   

    看看这里吧
    SQL 基础--> 子查询
      

  2.   

    group by后面列表只能是select 中非聚组函数的全集.
    insert 语句的values后面只能使用具体数值.
      

  3.   

    我杂感觉是:2,4,5,61 和6 理解相反?
    6是说insert语句中的values值可以用子查询 对的吧
    insert into table select ...from 
      

  4.   

    6 可以 
    insert into select ...
    insert into values select ...?
      

  5.   

    INSERT INTO
      (SELECT SS FROM T2)
      select c1 FROM t1 WHERE c1 = 'Davies';
    这样都可以。
      

  6.   

    insert into t values( select 1 from dual);
      

  7.   

    呵呵,6的意思就是跟楼上一样,values(子查询),这种是不符合语法的.
      

  8.   

    --偶的天啊
    scott@YPCOST> insert into (select name from test) select ename from emp;已创建14行。scott@YPCOST> commit;提交完成。scott@YPCOST> select * from test;        ID NAME
    ---------- ----------
             2 dfds
             3 dfds
             4 SMITH
             5 ALLEN
             6 WARD
             7 JONES
             8 MARTIN
             9 BLAKE
            10 CLARK
            11 SCOTT
            12 KING
            13 TURNER
            14 ADAMS
            15 JAMES
            16 FORD
            17 MILLER已选择16行。
      

  9.   

    insert into table
    select  from
    是1所描述的情况吧
      

  10.   


    scott@YPCOST> insert into test values(select 'dfds' from dual);
    insert into test values(select 'dfds' from dual)
                            *
    第 1 行出现错误:
    ORA-00936: 缺失表达式
    scott@YPCOST> insert into test values (select 'dd' from dual);
    insert into test values (select 'dd' from dual)
                             *
    第 1 行出现错误:
    ORA-00936: 缺失表达式
      

  11.   

    insert的语法图
    insert_statement ::=
    INSERT_INTO {table_reference | (subquery) | TABLE (subquery2) }
     [(column_name [, column_name]...)]
     {VALUES (sql_expression [, sql_expression]...) [ returning_clause ] 
     | subquery3} ;
      

  12.   

    要么是values(数值),要么是select,不能是values(select)
      

  13.   


    1的情况是:如(Aspen) 的测试insert into (select name from test) select ename from emp;6的情况是:insert 语句中的values值,可以用子查询,即:insert into emp select * from emp;
    反正我是这么理解6的意思的 
      

  14.   

    1我理解的也有问题,应该是zhuomingwang在13楼模拟的情况
      

  15.   


    insert into t values( select 1 from dual);SQL code
    scott@YPCOST> insert into test values(select 'dfds' from dual);
    insert into test values(select 'dfds' from dual)
                            *
    第 1 行出现错误:
    ORA-00936: 缺失表达式
    scott@YPCOST> insert into test values (select 'dd' from dual);
    insert into test values (select 'dd' from dual)
                             *
    第 1 行出现错误:
    ORA-00936: 缺失表达式看看
      

  16.   

    不对啊 INSERT INTO T1 VALUES(1,SELECT ID FROM T2 WHERE ID =2);
      

  17.   

    把values 去掉INSERT INTO T1 SELECT '1', ID FROM T2 WHERE ID =2);
      

  18.   

    理解的问题吧.6的意思是values的括号里是一个子查询.这样肯定是不成的.
    即使你要对一个字段做插入,values里面得用子查询也必须加个括号.实际上对oracle
    来说还是插入的一个值,只不过这个值是通过子查询的出的.说的话比较枯燥,直接给你个例子就明白了.
    SQL> desc t_test_temp
    Name Type          Nullable Default Comments 
    ---- ------------- -------- ------- -------- 
    ID   NUMBER        Y                         
    NAME VARCHAR2(100) Y                         
     
    SQL> INSERT INTO t_test_temp(id) VALUES(SELECT 1 FROM dual);
     
    INSERT INTO t_test_temp(id) VALUES(SELECT 1 FROM dual)
     
    ORA-00936: 缺失表达式
     
    SQL> INSERT INTO t_test_temp(id) VALUES((SELECT 1 FROM dual));
     
    1 row inserted
     
    SQL> 
      

  19.   

    6的意思并不是说values里面不能用子查询,而是说values里面第一层不能是子查询.