标准SQL嵌套查询语句
标准SQL嵌套查询语句
在一个SELECT 语句的WHERE 子句或HAVING 子句中嵌套另一个SELECT 语句的查询称为嵌套查询,又称子查询。子查询是SQL 语句的扩展,例如下:
select * from table1 where xh in
(select xh from table2)
sql from 语句允许嵌套子句么, 就是select * from( select ......); 编译器老报错啊
你写的语句是没有任何问题的,但是这个只有在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
sql语句嵌套更新
update b
set b.unitename='套'
from a,b
where a.id=b.id
and a.typeid=13
SQL 语句 UPDATE带嵌套子查询的问题
create table AAA( mc varchar(10), s1 int )
insert AAA values('A','997')
insert AAA values('B','1234')
create table BBB( mc varchar(10), s1 int )
insert BBB values('A','105')
insert BBB values('A','213')
insert BBB values('B','116')
insert BBB values('B','211')
insert BBB values('B','303')
-- 更新A表里S1值 ,A表里S1值-去B表里值
-- ? B表里S1值之合?
update AAA set
s1 = s1 - isnul((select sum(s1) from BBB where BBB.mc=AAA.mc),0)
-- next for M$SQL:
update AAA set
s1 = s1 - B.s1
from AAA
join (select mc, sum(s1) as s1 from BBB group by mc) B
on B.mc = AAA.mc
SQL中SELECT中的FROM子句可否带另外一个SELECT
可以。
SQL嵌套SELECT语句是很常见的SQL语句,下面就为您详细介绍SQL嵌套SELECT语句的语法,并附相关示例,供您参考学习之用。
嵌套SELECT语句也叫子查询,一个SELECT 语句的查询结果能够作为另一个语句的输入值。子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在select list中,作为一个字段值来返回。
1、单行子查询 :单行子查询是指子查询的返回结果只有一行数据。当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, >, =, <=, )来进行比较。
例:
select ename,deptno,sal from emp where deptno=(select deptno from dept where loc='NEW YORK');
2、多行子查询:多行子查询即是子查询的返回结果是多行数据。当主查询语句的条件语句中引用子查询结果时必须用多行比较符号(IN,ALL,ANY)来进行比较。其中,IN的含义是匹配子查询结果中的任一个值即可("IN" 操作符,能够测试某个值是否在一个列表中),ALL则必须要符合子查询的所有值才可,ANY要符合子查询结果的任何一个值即可。而且须注意ALL 和ANY 操作符不能单独使用,而只能与单行比较符(=、>、= 、<= 、)结合使用。
例:
1).多行子查询使用IN操作符号例子:查询选修了老师名叫Rona(假设唯一)的学生名字
sql> select stName from Student where stId in(selectdistinct stId from score where teId=(select teId from teacher where teName='Rona'));
查询所有部门编号为A的资料:
SELECT ename,job,sal FROM EMP WHERE deptno in ( SELECT deptno FROM dept WHERE dname LIKE 'A%');
2).多行子查询使用ALL操作符号例子:查询有一门以上的成绩高于Kaka的最高成绩的学生的名字:
sql> select stName from Student where stId in(select distinct stId from score where score >all(select score from score where stId=(select stId from Student where stName= 'Kaka') ));
3). 多行子查询使用ANY操作符号例子:查询有一门以上的成绩高于Kaka的任何一门成绩的学生的名字:
sql> select stName from Student where stId in(select distinct stId from score where score >any(select score from score where stId=(select stId from Student where stName='Kaka')));
3、多列子查询:当是单行多列的子查询时,主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, >, =, <=, )来进行比较;当是多行多列子查询时,主查询语句的条件语句中引用子查询结果时必须用多行比较符号(IN,ALL,ANY)来进行比较。
例:
SELECT deptno,ename,job,sal FROM EMP WHERE (deptno,sal) IN (SELECT deptno,MAX(sal) FROM EMP GROUP BY deptno);
4、内联视图子查询
例:
(1)SELECT ename,job,sal,rownum FROM (SELECT ename,job,sal FROM EMP ORDER BY sal); (2)SELECT ename,job,sal,rownum FROM ( SELECT ename,job,sal FROM EMP ORDER BY sal) WHERE rownum<=5;
5、在HAVING子句中使用子查询
例:
SELECT deptno,job,AVG(sal) FROM EMP GROUP BY deptno,job HAVING AVG(sal)>(SELECT sal FROM EMP WHERE ename='MARTIN');
SQL语句select好象可以嵌套,怎么用法
--方法一
select top 10 from (select * from sysobjects) as a where 1=1
-- 方法二
with ts as
(
select * from sysobjects
)
select top 10 * from ts where 1=1
SQL 嵌套查询语句,
编译应该是没有问题。
但不知道你的需求是什么,所以无法确定你的SQL文是否正确。
因为,也有可能是你需求是正确的,但数据库里没有满足条件的数据,所以你没检索到结果。
请问SQL语句只可以进行一层嵌套吗?我想实现两层或以上的嵌套语句,但是嵌套后只符合其中一个嵌套条件
可以多个嵌套,但是只要一个条件不满足结果都查询不到,你把语句写出来看下
Update Table Set a='5' Where b=
(Select b
From Table
Where c In (Select c
From Dmpedi.Pps_Temp
Where b = '2'
And Rownum < 5)
And Rownum = 1)
求帮忙优化一小段IN嵌套的SQL语句
试试这个:
SELECT a.* FROM A a
LEFT JOIN B b ON b.id = a.bId
WHERE exists (
SELECT c.id FROM C c
WHERE b.cId =c.id and name LIKE CONCAT('%', '123', '%'));
还要检查索引是否合理哦!
列ID name 是否建立了索引
请采纳!
SQL的SELECT语句,里面可以嵌套CASE么??
可以的,而且使用频率还比较高。
例:字段:性别 以1和2,分别代表男和女
xb
1
2
1
那么检索的时候可以写:
select case when xb = '1' then‘男’when '2' then '女' else '' end
标准SQL嵌套查询语句:等您坐沙发呢!