日期:2014-05-19  浏览次数:20718 次

select * from (select top 1 a from A) a,(select top 1 b from B where xx='xx') b的问题
1   select   *   from   (select   top   1   a   from   A)   a,(select   top   1   b   from   B   where   xx= 'xx ')   b    
a           b
1           2      
(select   top   1   a   from   A)   a   总有记录
(select   top   1   b   from   B   where   xx= 'xx ')   b    
    它如果没有记录的话,语句1也不出来记录,,这是咋回事泥

------解决方案--------------------
帮顶
------解决方案--------------------
语句1是用的迪卡尔积,需要两个表都有数据才行.
------解决方案--------------------
帮顶

------解决方案--------------------
where xx= 'xx '--条件不满足没记录
------解决方案--------------------
(select top 1 b from B where xx= 'xx ') b
它如果没有记录的话,语句1也不出来记录,,这是咋回事泥
----------------------
现在说的是上述查询没有结果时第一个语句也没有结果的问题.
------解决方案--------------------
从2个表中提取数据吗?
要是从2个表里提取数据,需要有一个记录关联项?

(SQL不会,如果错了,就当作没看见好了)
------解决方案--------------------
select top 1 a from A--只要表里有记录都满足
------解决方案--------------------
因为这个语句是内连接,所以如果b没有记录就不会出来记录

要达到b没记录也能出来记录,可以这样做:
select * from (select top 1 a from A) a
left outer join (select top 1 b from B where xx= 'xx ') b
------解决方案--------------------
用左连试一试。
------解决方案--------------------
对不起,上面语句错误:
正确应该的是:
select * from (select top 1 a from A) a
left outer join (select top 1 b from B where xx= 'xx ') b
on 1= 1