判断表中的某个字段, 再决定是否关联另一张表

ltjoy 2014-10-31 08:19:15
有2张表,表1,表2,
表1中有个字段A,
判断A=0 的时候 ,不和表2关联,不为0的时候和表2关联,怎么写啊?
...全文
452 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltjoy 2014-11-01
  • 打赏
  • 举报
回复
谢谢你一直的回复。散分。
ltjoy 2014-11-01
  • 打赏
  • 举报
回复
谢谢,明白了。散分
jxwangjm 2014-11-01
  • 打赏
  • 举报
回复
select t1.c1,t1.c2 from t1 where t1.c1=0
union
select t1.c1,t2.c2 from t1
	inner join t2 on t1.c1=t2.c1
	where t1.c1<>0
用Union
ltjoy 2014-11-01
  • 打赏
  • 举报
回复
LEFT JOIN 表2 T2 ON T1.B=T2.B AND T1.A=0 B=2的关联字段关联后, A B C 0 2 4 T2.C都等于4了,ISNULL(T2.C,10) 就不会变成10了,怎么会一样呢~不明白啊
还在加载中灬 2014-11-01
  • 打赏
  • 举报
回复
同样的写法~
ltjoy 2014-10-31
  • 打赏
  • 举报
回复
如果是下面这种情况呢? 假设表1有两条数据 表1 A B 0 2 1 3 假设表2也有两条数据 B C 2 4 3 5 我想要得的数据是 A C 0 10 1 5 此时表1和表2的关联字段都一样。该怎么写呢
还在加载中灬 2014-10-31
  • 打赏
  • 举报
回复
这样的话,直接在表1 A=0的地方左连接表2就可以了 然后在表1 A不为0的时候就不会把表2连接进来,这时加个ISNULL判断,给为空的加个10,问题就解决了
SELECT T1.A,ISNULL(T2.C,10)AS C FROM 表1 T1 LEFT JOIN 表2 T2 ON T1.B=T2.B AND T1.A=0
我上面写的数据错了 假设表1有两条数据 表1 A B 0 1 1 2 假设表2也有两条数据 B C 2 4 3 5 那么你要得的数据是不是 A C 0 10 1 4
ltjoy 2014-10-31
  • 打赏
  • 举报
回复
顺便解释一下,你是用字段B进行判断并且也作为关联项目了, 最好是判断字段和关联字段不是同一个字段
ltjoy 2014-10-31
  • 打赏
  • 举报
回复
你的意思是判断表1中的字段B了, 如果是这样的话,就是这个意思。
还在加载中灬 2014-10-31
  • 打赏
  • 举报
回复
要不我说下我的理解吧 假设表1有两条数据 表1 A B 1 0 1 2 假设表2也有两条数据 B C 2 4 3 5 那么你要得的数据是不是 A C 1 10 1 4
ltjoy 2014-10-31
  • 打赏
  • 举报
回复
表1: 字段A 字段B 表2: 字段B, 字段C 如果表1.字段A=0 select 表1.字段A, '10' AS 字段C FROM 表1 如果表1.字段A=1 select 表1.字段A, 表2.字段C FROM 表1 LEFT JOIN 表2 ON 表1.字段B=表2.字段B 想到达到这个效果,sql怎么写?
ltjoy 2014-10-31
  • 打赏
  • 举报
回复
表1: 字段A 字段B 表2: 字段B, 字段C 如果表1.字段A=0 select 表1.字段A, '10' AS 字段C FROM 表1 如果表1.字段A=1 select 表1.字段A, 表2.字段C FROM 表1 LEFT JOIN 表2 ON 表1.字段B=表2.字段B 想到达到这个效果,sql怎么写?
还在加载中灬 2014-10-31
  • 打赏
  • 举报
回复
引用 2 楼 ltjoy 的回复:
和表2关联的是动态的,判断表1中的A字段,为0就不关联表2了,这个sql貌似不是这个意思
没太明白意思,贴下示例数据,和期望结果
还在加载中灬 2014-10-31
  • 打赏
  • 举报
回复
SELECT T1.*,T2.* FROM 表1 T1 LEFT JOIN 表2 T2 ON T1.连接字段=T2.连接字段 AND T1.A=0
把条件加上连接上就可以了
ltjoy 2014-10-31
  • 打赏
  • 举报
回复
和表2关联的是动态的,判断表1中的A字段,为0就不关联表2了,这个sql貌似不是这个意思
习惯性蹭分 2014-10-31
  • 打赏
  • 举报
回复

select a.* from 
[表1] a left join [表2] b
on a.A=0 and 其它条件
???

22,209

社区成员

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

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