创建临时表
CREATE table #_tmp1218 (A int,B int)插入数据
insert into #_tmp1218 values (1,2)
insert into #_tmp1218 values (23)
insert into #_tmp1218 values (3,4)用下面这个语句查询
select (select A from #_tmp1218 where #_tmp1218.A = b.B) from #_tmp1218 b查询结果为
上面这条语句,#_tmp1218与b 相交出一张9行数据的表
其中符合#_tmp1218.A = b.B的数据有两行
这个2/3/null的结果是怎么得来的呢?
CREATE table #_tmp1218 (A int,B int)插入数据
insert into #_tmp1218 values (1,2)
insert into #_tmp1218 values (23)
insert into #_tmp1218 values (3,4)用下面这个语句查询
select (select A from #_tmp1218 where #_tmp1218.A = b.B) from #_tmp1218 b查询结果为
上面这条语句,#_tmp1218与b 相交出一张9行数据的表
其中符合#_tmp1218.A = b.B的数据有两行
这个2/3/null的结果是怎么得来的呢?
解决方案 »
- sql server 想查询一段时间内的数据 寻个语句
- 如何获得一条SQL语句执行所用的时间
- 在插入一条记录后,执行SELECT @@Identity from POmaster,结果返回很多值,我本以为只会返回一个值,why?
- 关于将MS-SQLSERVER 7.0从一台机物理复制到另一台机后服务不能启动?加急
- varchar 和 char 有什么具体的区别么?
- xpsendmail出现中文乱码
- 变量定义的时候超过8000,如何处理!!
- 有关sql server的一个定时备份数据库的问题!!急急急!!
- 寻找成都的sql高手?
- 技术小白请各路大神看看哪里写得不合理
- 关于SQL SERVER的题目
- sql根据条件判断是否插入数据
先拿红色表b中字段[b]去表(#_tmp1218)中找字段A值相等的A值
select (select A from #_tmp1218 where #_tmp1218.A = b.B) from #_tmp1218 b等同于如下SQL:
select b.a
from #_tmp1218 a
left join #_tmp1218 b on a.b=b.A
那2、3、null又是怎么来的?
你这个相当于 left join .
那2、3、null又是怎么来的?
因为读取的是子查询的内容,不是后边边的内容,这样试试就明白了
select *,(select A from #_tmp1218 where #_tmp1218.A = b.B) from #_tmp1218 b
(1,2)
(2,3) 输出的第一行2是这里的2 (select A from #_tmp1218 where #_tmp1218.A = b.B)
(3,4) 输出的第二行3是这里的3