您好我的SQL有点生疏,需要一些帮助才能使声明正确。我有以下设置表A和B:
A B
===== ======
A A B
B C B
A C
B D
D A
我想加入A上的单个列,B上的两列都以表C结束:
C
=====
A
A
B
B
B
A
我尝试过不同的连接,但是当我使用OR运算符时,我会遇到许多行。我的设置有点高级,我希望上面的简化表足以说明我的问题。在上面的例子中,我的设置有点先进。在我的真实世界应用程序中,我有两个表,我必须找到所有多个电话号码,可以分为两列,PHONE1和PHONE3。首先,我建立一个交叉点,以便获得所有电话号码,这些电话号码不止一次。我的问题是我需要最终返回一个返回所有多重声明的语句,以及来自其他列的一些额外数据。以下是我的发言:
SELECT * FROM
(SELECT COMPANY, CONTACT, PHONE1, PHONE3, U_EMAIL, UMEDLEM, UKONKAT, UAAFMELD
FROM CONTACT1 JOIN CONTACT2 on CONTACT1.ACCOUNTNO = CONTACT2.ACCOUNTNO) as t1
INNER JOIN
(SELECT PHONE1 as PHONE FROM CONTACT1 WHERE LEN(PHONE1) > 0
INTERSECT
SELECT PHONE3 FROM CONTACT1 WHERE LEN(PHONE1) > 0) as t2 ON t1.PHONE1 = t2.PHONE
答案 0 :(得分:0)
这就是你如何在B的两列上加入A的列。
SELECT * FROM A
INNER JOIN B B1 ON A.Column1 = B1.Column1
INNER JOIN B B2 ON A.Column1 = B2.Column2
或者您可以使用UNION来组合两个查询结果
SELECT * FROM A
INNER JOIN B ON A.Column1 = B.Column1
UNION
SELECT * FROM A
INNER JOIN B ON A.Column1 = B.Column2
您还可以考虑LEFT连接,具体取决于您希望如何处理B中的NULL值。