问题描述
- 新手求解答:SQL中有关子查询
-
SQL子查询中
select (子查询) from 表明
和 select * from (子查询) AS 别名
这两个怎么理解啊?
直接写列明和表明不行么?临时表是什么意思啊?
解决方案
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.字段来显示
解决方案二:
假如我现在用一条SQL 语句做子查询 :
select StudentName,Age from Student 就已这条语句为 子查询
1 那么 select (子查询) from 表明 这个是不对的,直接会报错 ,错误可能是这样
消息 116,级别 16,状态 1,第 1 行
当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。
消息 512,级别 16,状态 1,第 1 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
- select * from (子查询) AS 别名 这条语句 是不会报错
- 你当然可能 写列明和表明,重点看你需要什么 样的操作,
不过很多情况下,都会用 left join 来连表查数据,面对几千万的数据,都不是问题, 用 in 、 not in 、 exists 这些 对于少数据,当然感觉不到什么
,但对于大数据,那真的会很慢的 - 临时表,一般用 # 开头,只是把你当前查出的数据,当做一个结果集,存入临时表,方便后续的操作
- 当然你也可以用 公用表 with as 这样的语法,原理一样,只是做个临时存储
解决方案三:
楼上回答基本正确……
解决方案四:
如楼上两位所说,,,,
时间: 2024-11-03 05:09:21