这个查询如何写,求指点

Kingofcode 2015-11-20 09:14:58
有2个表

--table a
--id1,name1,remark1
--1, n1, r1
--2, n2, r2
--3, n3, r3


--table b
--id2,name2,remark2
--b1, bn1, br1
--b2, bn2, br2
--b3, bn3, br3
--b2, bn4, br5
--b3, bn5, br6
--b2, bn7, br5
--b3, bn8, br6


不考虑2个表有关联键
现在我要查询A表里面的一行或多行,其中一列是从B表里面获取的,条件都在where后面各自写各自的 ,我试过cross join可以实现,但有一种情况 当B表里没有满足条件的记录的时候 则记录就为空了 实际我无论B表里有没有记录,正确的结果都不能为空,我想了一个办法,使用cross之后 在union 单独的查询表A 可以实现 发上来 只是想看一下大家有没有更好的写法
...全文
166 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbdzjx 2015-11-20
  • 打赏
  • 举报
回复
简单的测试了一下,只有下面这种能有个结果出来:
Select a.*,b.name2 from 
(select * from a where id1 in(1,2))a
full join 
(select * from b where id2='b10')b 
on 1=1
Yole 2015-11-20
  • 打赏
  • 举报
回复
a left join b a左联接b 试一下吧~
Kingofcode 2015-11-20
  • 打赏
  • 举报
回复
高手帮指点个好的解决方法啊
Kingofcode 2015-11-20
  • 打赏
  • 举报
回复
问题就在后面 2个那种情况 当b表没有符合条件的记录的时候 那么我需要的结果应该是b那一列为空 记录就是A的记录 而不是所有的都为空
Kingofcode 2015-11-20
  • 打赏
  • 举报
回复

Select a.*,b.name2 from a,b where a.id1=1 and b.id2='b2'

Select a.*,b.name2 from a,b where a.id1 in(1,2) and b.id2='b2'

Select a.*,b.name2 from a,b where a.id1=1 and b.id2='b10'

Select a.*,b.name2 from a,b where a.id1 in(1,2) and b.id2='b10'


id1         name1      remark1              name2
----------- ---------- -------------------- ----------
1           n1         r1                   bn2
1           n1         r1                   bn4
1           n1         r1                   bn7

(3 行受影响)

id1         name1      remark1              name2
----------- ---------- -------------------- ----------
1           n1         r1                   bn2
1           n1         r1                   bn4
1           n1         r1                   bn7
2           n2         r2                   bn2
2           n2         r2                   bn4
2           n2         r2                   bn7

(6 行受影响)

id1         name1      remark1              name2
----------- ---------- -------------------- ----------

(0 行受影响)

id1         name1      remark1              name2
----------- ---------- -------------------- ----------

(0 行受影响)




spiritofdragon 2015-11-20
  • 打赏
  • 举报
回复
记录为空?是指 1、没有这行记录? 2、有这行记录,数据值在从表里查出来的是空字符串?
Kingofcode 2015-11-20
  • 打赏
  • 举报
回复
简单说一下就是一个cross join 查询 的特殊情况 非关联查询,从表没有符合条件的记录的时候为空了,实际从表没有我想要的结果就是主表的记录,如果从表有符合条件的那就是cross join的结果
Kingofcode 2015-11-20
  • 打赏
  • 举报
回复
@zbdzjx 的回答结果正确,已结贴

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧