单行子查询返回多个行 单行子查询返回多个行解决办法
琪琪给大家谈谈单行子查询返回多个行,以及单行子查询返回多个行解决办法应用的知识点,希望对你所遇到的问题有所帮助。
单行子查询返回多个行 单行子查询返回多个行解决办法
单行子查询返回多个行 单行子查询返回多个行解决办法
1、case when lock_purt in(SELECT id from data_dictionary) then (SELECT name from data_dictionary where id=lock_purt) else lock_purt end as lock_purt(别名),case when lock_framework in(SELECT id from data_dictionary) then (SELECT name from data_dictionary where id=lock_framework) else lock_framework end as lock_frameworkfrom v_photosum_attach ;注释:可以在表v_photosum_attach上的一行数据行上对两个不同列lock_purt和lock_framework各自进行一次的查询(另一个表,即when部分)和处理(then部分),即相当于可以在表v_photosum_attach上的同一行数据行上进行了多次查询处理。
2、WHERE不对,在select子句里不直接支持in、is not null等在where子句里使用的关键字。
3、扩展资料:关于上述where子句里使用的关键字,例如:select lock_purt, (lock_purt in(SELECT id from data_dictionary )) From v_photosum_attach ;再例如,执行如下语句时:select (lock_purt is not null) From v_photosum_attach ;提示ORA-00907: missing right parenthesis,即在is not null前缺失右括号。
4、按提示修改后,执行之:select (lock_purt ) is not null) From v_photosum_attach ;提示ORA-00923: FROM keyword not found where expected,即在is not null前缺失from关键字。
5、由此看出,is not null关键字应该属于from子句(里的where子句)。
6、SQL嵌套SELECT语句是很常见的SQL语句,下面就为您详细介绍SQL嵌套SELECT语句的语法,并附相关示例,供您参考学习之用。
7、嵌套SELECT语句也叫子查询,一个SELECT 语句的查询结果能够作为另一个语句的输入值。
8、子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在select list中,作为一个字段值来返回。
9、1、单行子查询 :单行子查询是指子查询的返回结果只有一行数据。
10、当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, >, =,使用ANY和ALL执行效率要高于分组函数 )将两个的查询合并起来来进行比较。
11、例:select ename,deptno,sal from emp where deptno=(select deptno from dept where loc='NEW YORK');例: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)来进行比较。
12、例: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 rownum5、在HAVING子句中使用子查询例:SELECT deptno,job,AVG(sal) FROM EMP GROUP BY deptno,job HAVING AVG(sal)>(SELECT sal FROM EMP WHERE ename='MARTIN');可以,那是子查询语句。
13、a.id as id,b.name as name(select id...) a,(select name...) bw方式很多here你写的这个是子查询的一种FROM (SELECT ... )FROM ...WHERE ...=(SELECT ... )SELECT ...(SELECT ... )FROM ...。
本文到这结束,希望上面文章对大家有所帮助。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。