哈哈哈123457
2017-10-22 02:03
采纳率: 100%
浏览 21.6k

sql 可以再select的查询字段里面再嵌套一个select 这样可以吗?

比如:select a,(select b from B) b from A,这样写应该注意什么呢?什么情况下使用这种写法?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

15条回答 默认 最新

  • 向前一丢丢 2017-10-22 03:13
    已采纳

    在字段中也同样可以,表结构如上图,这种需求通常用连接查询可以搞定,且大多数查询不止一个字段
    SELECT s.name,s.age,(SELECT NAME FROM teacher t WHERE t.id=s.id ) tname FROM student s;
    需要注意的是你里面嵌套的这个查询,只能查询一个字段 ,而且最好有关系

    已采纳该答案
    评论
    解决 2 无用
    打赏 举报
  • qq_24603507 2017-10-22 02:20

    select a ,
    (select b from B where B.id=A.id) as b
    from A

    评论
    解决 无用
    打赏 举报
  • qq_24603507 2017-10-22 02:21

    A表和B表要有关联才能一块查询

    评论
    解决 无用
    打赏 举报
  • maladj 2017-10-22 02:51

    想要查询2个表中的2列数据?

    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 = "苹果"
    );

    评论
    解决 无用
    打赏 举报
  • wilfultt_962464tt 2017-10-22 03:01

    你说的应该是关联查询,并非嵌套查询。关联查询必须两个表关联在一起,而嵌套查询,是一个查询语句嵌套在另一个查询语句的where字段里

    评论
    解决 无用
    打赏 举报
  • 向前一丢丢 2017-10-22 03:02

    可以,完全没有问题,这个叫子查询,两个或多个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);
    //表数据如下
    图片说明
    图片说明

    评论
    解决 无用
    打赏 举报
  • 冻酸奶 2017-10-22 03:26
    • 注意AB两表的关联条件
    • 相同条件下,B表只能查一条记录。可以使用 ```select top 1 from b from B
    
    
    评论
    解决 无用
    打赏 举报
  • linfanrong 2017-10-22 03:46

    需要知道a 和 b之间的关系,看是否可以关联

    评论
    解决 无用
    打赏 举报
  • java_zx_0825 2017-10-22 04:07

    可以的,建议学习一下SQL查询里面的高级查询里面的子查询。
    eg:select *from(select empno,ename,sal from emp);

    评论
    解决 无用
    打赏 举报
  • 浅淡浅 2017-10-22 04:13

    首先a和b有关联才可以。比如
    select a.a,(select b.b from B b where b.id=a.id) from A a

    评论
    解决 无用
    打赏 举报
  • ruchaofei 2017-10-22 05:10

    可以嵌套 只不过两者要有共同的属性 用where

    评论
    解决 无用
    打赏 举报
  • 鬼厉j 2017-10-22 06:10

    一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询。在外面的查询语句,称为主查询或外查询。

    特点:
    1、子查询都放在小括号内
    2、子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧
    3、子查询优先于主查询执行,主查询使用了子查询的执行结果
    4、子查询根据查询结果的行数不同分为以下两类:
    ① 单行子查询
    结果集只有一行
    一般搭配单行操作符使用:> < = <> >= <=
    非法使用子查询的情况:
    a、子查询的结果为一组值
    b、子查询的结果为空

    评论
    解决 无用
    打赏 举报
  • thinking_fioa 2017-10-22 07:06

    可以的,子查询可以的。要求a,b表有关联。建议抽空看看<> 或看看我写的博客:http://blog.csdn.net/thinking_fioa/article/details/78265745

    评论
    解决 无用
    打赏 举报
  • qq_38030147 2017-10-22 08:05

    可以,select 出一个具体的值可以作为参数

    评论
    解决 无用
    打赏 举报
  • zjl_csdnzh 2017-10-22 08:50

    可以搜索:数据库子查询

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题