我在使用JOIN QUERY时遇到了困难,而且很难掌握JOIN语法。
SELECT * FROM TABLE_A
JOIN TABLE_B ON TABLE_B.Column1 = TABLE_A.Column1
AND (TABLE_B.Column1 + CONVERT(varchar(10), TABLE_B.Column2)) != TABLE_A.Column1
我需要从两个表中获取满足这两个条件的行,但是当前返回的结果就好像AND条件不存在...
关于实现这一点的任何想法?为了帮助进入背景:
Table A Table B
ABCD ABCD 21 Username1
ABCD21 ABCD 10 Username2
ABCD
ABCD
ABCD21
ABCD21
期望的输出:
Table C
ABCD 10 Username1
ABCD 10 Username1
ABCD 10 Username1
P.S。我目前可以做与我的问题相反的问题:
SELECT * FROM TABLE_A
JOIN TABLE_B ON (TABLE_B.Column1 + CONVERT(varchar(10), TABLE_B.Column2)) = TABLE_A.Column1
答案 0 :(得分:1)
评估AND 如果第一个条件为真,则第二个条件保证为真,除非TABLE_B.Column2为null或为空
如果"一个" ="一个"
然后"一个" +"两个" !="一个"
ON TABLE_B.Column1 = TABLE_A.Column1
AND (TABLE_B.Column1 + CONVERT(varchar(10), TABLE_B.Column2)) != TABLE_A.Column1
每行都有自己的评估
请更好地描述您要做的事情
这可能是你想要的
SELECT B1.*
FROM TABLE_A A
JOIN TABLE_B B1
ON B1.Column1 = A.Column1
LEFT JOIN TABLE_B B2
on (B2.Column1 + CONVERT(varchar(10), B2.Column2)) = A.Column1
WHERE B2.Column1 IS NULL;
尝试
on (B2.Column1 + CONVERT(varchar(10), B2.Column2)) != A.Column1
答案 1 :(得分:0)
问题是有多行符合第一个条件。有些人也满足第二个条件。
我认为您正在寻找带有left join
子句的where
:
SELECT *
FROM TABLE_A a LEFT JOIN
TABLE_B b
ON b.Column1 = a.Column1 AND
(b.Column1 + CONVERT(varchar(10), b.Column2)) = a.Column1
WHERE b.Column1 IS NULL;