比如:select a,(select b from B) b from A,这样写应该注意什么呢?什么情况下使用这种写法?
在字段中也同样可以,表结构如上图,这种需求通常用连接查询可以搞定,且大多数查询不止一个字段
SELECT s.name,s.age,(SELECT NAME FROM teacher t WHERE t.id=s.id ) tname FROM student s;
需要注意的是你里面嵌套的这个查询,只能查询一个字段 ,而且最好有关系
select a ,
(select b from B where B.id=A.id) as b
from A
A表和B表要有关联才能一块查询
select a, B.b as b from A,B where A.id=B.id;
select pname from product where pprice >
(
select pprice from product where pname = "苹果"
);
你说的应该是关联查询,并非嵌套查询。关联查询必须两个表关联在一起,而嵌套查询,是一个查询语句嵌套在另一个查询语句的where字段里
可以,完全没有问题,这个叫子查询,两个或多个select可以查询同一张表,也可以查询多张表
//两个select查询同一张表
SELECT NAME,age FROM student WHERE id=(SELECT id FROM student WHERE id=2 );
SELECT NAME,age FROM student WHERE id IN(SELECT id FROM student );
//两个或多个select 查询不同的表,
SELECT NAME,age FROM student WHERE t_id=(SELECT id FROM teacher WHERE age=23);
//表数据如下
需要知道a 和 b之间的关系,看是否可以关联
可以的,建议学习一下SQL查询里面的高级查询里面的子查询。
eg:select *from(select empno,ename,sal from emp);
首先a和b有关联才可以。比如
select a.a,(select b.b from B b where b.id=a.id) from A a
可以嵌套 只不过两者要有共同的属性 用where
一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询。在外面的查询语句,称为主查询或外查询。
特点:
1、子查询都放在小括号内
2、子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧
3、子查询优先于主查询执行,主查询使用了子查询的执行结果
4、子查询根据查询结果的行数不同分为以下两类:
① 单行子查询
结果集只有一行
一般搭配单行操作符使用:> < = <> >= <=
非法使用子查询的情况:
a、子查询的结果为一组值
b、子查询的结果为空
可以的,子查询可以的。要求a,b表有关联。建议抽空看看<> 或看看我写的博客:http://blog.csdn.net/thinking_fioa/article/details/78265745
可以,select 出一个具体的值可以作为参数
可以搜索:数据库子查询
楼主的意思是, select 字段 别名,(select 字段 from )别名... from table ,这样子做是否非常影响速度?