zhuzhu2015_
zhuzhu2015_
采纳率72.7%
2016-01-05 07:36 阅读 1.5k

新手求解答:SQL中有关子查询

1

SQL子查询中
select (子查询) from 表明
和 select * from (子查询) AS 别名
这两个怎么理解啊?
直接写列明和表明不行么?临时表是什么意思啊?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    u012158784 java_xiaohu 2016-01-05 07:47

    Select(子查询) from 表名 只是显示子查询的结果,也可用表名.字段来作为子查询的条件,例:select b.a,(select a from c c where c.a=b.a) from b b!
    Select d.a from(select a from b) d d作为临时表,子查询查出的字段可用d.字段来显示

    点赞 2 评论 复制链接分享
  • u012039218 忧郁王子锋少 2016-01-05 07:52

    假如我现在用一条SQL 语句做子查询 :
    select StudentName,Age from Student 就已这条语句为 子查询

    1 那么 select (子查询) from 表明 这个是不对的,直接会报错 ,错误可能是这样

    消息 116,级别 16,状态 1,第 1 行
    当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。

    消息 512,级别 16,状态 1,第 1 行
    子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。

    1. select * from (子查询) AS 别名 这条语句 是不会报错

    2. 你当然可能 写列明和表明,重点看你需要什么 样的操作,
      不过很多情况下,都会用 left join 来连表查数据,面对几千万的数据,都不是问题, 用 in 、 not in 、 exists 这些 对于少数据,当然感觉不到什么
      ,但对于大数据,那真的会很慢的

    3. 临时表,一般用 # 开头,只是把你当前查出的数据,当做一个结果集,存入临时表,方便后续的操作

    4. 当然你也可以用 公用表 with as 这样的语法,原理一样,只是做个临时存储

    点赞 1 评论 复制链接分享
  • u012401478 好的哦 2016-01-05 08:40

    如楼上两位所说,,,,

    点赞 评论 复制链接分享
  • jinzhong0731 「已注销」 2016-01-05 11:26

    楼上回答基本正确……

    点赞 评论 复制链接分享

相关推荐