SQL: Equi Joins with OR



我正试图弄清楚如何使用多个OR条件进行等联接,但似乎还没弄清楚。以下是我目前正在进行的工作。我希望找到两个p_number首先匹配的所有记录,然后对于p_number不匹配的实例返回g_id等于p_number的情况。有什么想法吗?提前感谢!

FROM T1, T2 
WHERE ( T1.p_number = T2.p_number OR T1.g_id = T2.p_number) 

试试看:

SELECT * FROM T1 JOIN T2 ON T1.p_number = T2.p_number WHERE ((T1.p_number = T2.p_number) OR ((T1.p_number != T2.p_number) AND (T1.g_id = T2.p_number)))
declare @a table(col1 int, col2 int);
insert into @a(col1, col2) values (1, 100), (200, 2), (1, 1000);
declare @b table(col1 int, col2 int);
insert into @b(col1, col2) values (1, 0), (2, 0), (1, 100);
select *
from @a as a, @b as b
where (a.col1 = b.col1 and a.col2 = b.col1) or (a.col1 = b.col1 and a.col2 <> b.col2) or (a.col2 = b.col1);

最新更新