表1中有个字段A,
判断A=0 的时候 ,不和表2关联,不为0的时候和表2关联,怎么写啊?
16 个解决方案
#1
select a.* from
[表1] a left join [表2] b
on a.A=0 and 其它条件
???
#2
和表2关联的是动态的,判断表1中的A字段,为0就不关联表2了,这个sql貌似不是这个意思
#3
SELECT T1.*,T2.* FROM 表1 T1 LEFT JOIN 表2 T2 ON T1.连接字段=T2.连接字段 AND T1.A=0
把条件加上连接上就可以了
#4
没太明白意思,贴下示例数据,和期望结果
#5
表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怎么写?
字段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怎么写?
#6
表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怎么写?
字段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怎么写?
#7
要不我说下我的理解吧
假设表1有两条数据
表1
A B
1 0
1 2
假设表2也有两条数据
B C
2 4
3 5
那么你要得的数据是不是
A C
1 10
1 4
假设表1有两条数据
表1
A B
1 0
1 2
假设表2也有两条数据
B C
2 4
3 5
那么你要得的数据是不是
A C
1 10
1 4
#8
你的意思是判断表1中的字段B了,
如果是这样的话,就是这个意思。
如果是这样的话,就是这个意思。
#9
顺便解释一下,你是用字段B进行判断并且也作为关联项目了,
最好是判断字段和关联字段不是同一个字段
最好是判断字段和关联字段不是同一个字段
#10
这样的话,直接在表1 A=0的地方左连接表2就可以了
然后在表1 A不为0的时候就不会把表2连接进来,这时加个ISNULL判断,给为空的加个10,问题就解决了
我上面写的数据错了
假设表1有两条数据
表1
A B
0 1
1 2
假设表2也有两条数据
B C
2 4
3 5
那么你要得的数据是不是
A C
0 10
1 4
然后在表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
#11
如果是下面这种情况呢?
假设表1有两条数据
表1
A B
0 2
1 3
假设表2也有两条数据
B C
2 4
3 5
我想要得的数据是
A C
0 10
1 5
此时表1和表2的关联字段都一样。该怎么写呢
假设表1有两条数据
表1
A B
0 2
1 3
假设表2也有两条数据
B C
2 4
3 5
我想要得的数据是
A C
0 10
1 5
此时表1和表2的关联字段都一样。该怎么写呢
#12
同样的写法~
#13
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了,怎么会一样呢~不明白啊
B=2的关联字段关联后,
A B C
0 2 4
T2.C都等于4了,ISNULL(T2.C,10) 就不会变成10了,怎么会一样呢~不明白啊
#14
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
#15
谢谢,明白了。散分
#16
谢谢你一直的回复。散分。
#1
select a.* from
[表1] a left join [表2] b
on a.A=0 and 其它条件
???
#2
和表2关联的是动态的,判断表1中的A字段,为0就不关联表2了,这个sql貌似不是这个意思
#3
SELECT T1.*,T2.* FROM 表1 T1 LEFT JOIN 表2 T2 ON T1.连接字段=T2.连接字段 AND T1.A=0
把条件加上连接上就可以了
#4
没太明白意思,贴下示例数据,和期望结果
#5
表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怎么写?
字段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怎么写?
#6
表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怎么写?
字段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怎么写?
#7
要不我说下我的理解吧
假设表1有两条数据
表1
A B
1 0
1 2
假设表2也有两条数据
B C
2 4
3 5
那么你要得的数据是不是
A C
1 10
1 4
假设表1有两条数据
表1
A B
1 0
1 2
假设表2也有两条数据
B C
2 4
3 5
那么你要得的数据是不是
A C
1 10
1 4
#8
你的意思是判断表1中的字段B了,
如果是这样的话,就是这个意思。
如果是这样的话,就是这个意思。
#9
顺便解释一下,你是用字段B进行判断并且也作为关联项目了,
最好是判断字段和关联字段不是同一个字段
最好是判断字段和关联字段不是同一个字段
#10
这样的话,直接在表1 A=0的地方左连接表2就可以了
然后在表1 A不为0的时候就不会把表2连接进来,这时加个ISNULL判断,给为空的加个10,问题就解决了
我上面写的数据错了
假设表1有两条数据
表1
A B
0 1
1 2
假设表2也有两条数据
B C
2 4
3 5
那么你要得的数据是不是
A C
0 10
1 4
然后在表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
#11
如果是下面这种情况呢?
假设表1有两条数据
表1
A B
0 2
1 3
假设表2也有两条数据
B C
2 4
3 5
我想要得的数据是
A C
0 10
1 5
此时表1和表2的关联字段都一样。该怎么写呢
假设表1有两条数据
表1
A B
0 2
1 3
假设表2也有两条数据
B C
2 4
3 5
我想要得的数据是
A C
0 10
1 5
此时表1和表2的关联字段都一样。该怎么写呢
#12
同样的写法~
#13
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了,怎么会一样呢~不明白啊
B=2的关联字段关联后,
A B C
0 2 4
T2.C都等于4了,ISNULL(T2.C,10) 就不会变成10了,怎么会一样呢~不明白啊
#14
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
#15
谢谢,明白了。散分
#16
谢谢你一直的回复。散分。