> 唯美句子 > 标准SQL嵌套查询语句

标准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