sql from 语句允许嵌套子句么, 就是select * from( select ......); 编译器老报错啊

SELECT dept_name, avg_salary from (select dept_name, avg (salary) as avg_salary from instructor GROUP BY dept_name);

第1个回答  2011-03-25
你写的语句是没有任何问题的,但是这个只有在oracle 10g以后才支持呀。其他数据库不支持。

下面我在oracle10g下做的测试:

SQL> create table s1
2 (
3 a number(10),
4 b number(10)
5 )
6 /

表已创建。

SQL> insert into s1 values (1,1);

已创建 1 行。

SQL> insert into s1 values (1,2);

已创建 1 行。

SQL> insert into s1 values (2,1);

已创建 1 行。

SQL> insert into s1 values (2,2);

已创建 1 行。

SQL> insert into s1 values (2,3);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select a,b from (select a,sum(b) as b from s1 group by a);

A B
---------- ----------
1 3
2 6本回答被提问者采纳
第2个回答  2011-03-25
SELECT dept_name, avg_salary from (select dept_name, avg (salary) as avg_salary from instructor GROUP BY dept_name) t1;
加别名就可以了。
第3个回答  2011-03-25
不能这样写啊。要从内层得到一个字段,然后用那个字段作为where的条件再用外层。
第4个回答  2011-03-25
from后面一定是表名或临时表名
第5个回答  2011-03-25
嘿嘿,你可以变通一下,把子句弄成临时表就可以了啊

第四十五章 SQL命令 FROM(一)
可以在简单的 SELECT 语句、 CREATE VIEW DEFINITION SELECT 语句或 FROM 子句的子查询 SELECT 语句中使用 OPTIMIZE-OPTION FROM 子句关键字。 此可选关键字指定提供任何好处的所有索引都用于查询联接顺序中的第一个表。只有在定义了多个索引时才应使用此关键字。优化器的默认设置是只使用优化器认为最有益的那些索引。

8 种最坑的 SQL 错误用法,你有没有踩过?
SELECT * FROM operation WHEREtype = 'SQLStats'AND name = 'SlowLog' ORDERBY create_time LIMIT1000, 10;05、EXISTS语句 MySQL 对待 EXISTS 子句时,仍然采用嵌套子查询的执行方式。如下面的 SQL 语句:SELECT * FROM operation WHEREtype = 'SQLStats'AND name = 'SlowLog' ORDERBY create_time LIMIT1000...

sql1="select * from ' "&fenlei&" ' where idcard=' "&user...
sql1="select * from "&fenlei&" where idcard='"&user&"’"参数 fenlei(表名) 不需要用“‘”单引号

Microsoft VBScript 编译器错误 错误 '800a03f6' FROM 子句语法错误
sql="select * from user where username='"&request.Form("username")&"'"rsc.open sql,conn,0,1 ck=rsc("username")set rsc=nothing if ck<>"" then msg=msg&"<br>"&"用户名被人注册"response.Redirect("reg.asp?msg="&msg)end if dsql="select * from user where id is null"...

第十二章 使用嵌入式SQL(一)
在第一个例子中,改变SelectMode对显示没有影响; 在第二个示例中,因为#SQLCompile Select=Runtime,更改SelectMode将更改显示。嵌入式SQL语句由&sql()指令与其余代码分开,如以下示例所示:使用指定一个或多个主机变量的INTO子句返回结果。在这种情况下,主机变量名为:a。&sql指令不区分大小写;可...

VC++中SQL查询语句报错
printf(“select * from 交通信息管理数据表 where 输入员姓名 IN ('”+m_name+“')'");

...VBScript 编译器错误 (0x800A0401) 语句未结束
conn.Open "MyData"MyData是什么,Conn.open怎么能打开这个呢?set rs=conn.execute("select * from a;"),adcmdtext 你这个是什么Sql语句?怎么还在引号里带个分号呢?你后面的adcmdtext 又是什么?是定量还是变量?是变量,哪里赋值了呢?是定量,也该带个引号啊(当然,带了引号也是错的,他...

Microsoft VBScript 编译器错误 '800a0401' 语句未结束 \/webjx\/login...
sqlc = "select * from info where username='" & request.form("username") & "' and password='" & request.form("password") & "'"应该是 request.form 而不是 request.from, 拼写错误, 但不是你给出的语句未结束错误.也许你贴出的代码不是错误信息指出的错误的行....

用VB打开SQL SERVER记录时,不明白下面这条语句中用&符号括起来是代表什...
双引号里面的字段会经过编译器解释,然后再当作VB代码输出;单引号里面的不需要解释,直接输出。也就是说双引号中的变量会被解析,单引号里的变量不会被解析。查询语句中的字段如果是文本型就要用单引号,数字型(整型)的才不要单引号,简言之,一个SQL查询语句用双引号括起来,里面的SQL语句中的字符...

怎样SQL存储过程中执行动态SQL语句
关键就在SET @sql这一句话中,如果我们运行这个批处理,编译器就会产生一下错误 Msg 137, Level 15, State 2, Line 1 必须声明标量变量 "@OrderID"。使用EXEC时,如果您想访问变量,必须把变量内容串联到动态构建的代码字符串中,如:SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + '...

相似回答