我遇到过一种情况,我需要根据具有不同值的列加入两个表。
E.g。
Table1
列T1
Table2
列T2
T1
有100行,其值为P
和
T2
有50行,其值为N
,50行的值为P
我希望将Table1
与值P
的{{1}}合并为Table2
,其值N
以及P
它应该给我总共100条记录。
答案 0 :(得分:1)
试试这个:
SELECT
t1.t1,
t2.t2
FROM Table1 t1
INNER JOIN Table2 t2 ON t2.t2 IN('N', 'P')
WHERE T1.t1 = 'p';
谓词IN ('N', 'P')
将从table2获取值为N
和P
的t2值。
WHERE
子句将从tabale1获取t1的值,其值为P
,您可以将此谓词移动到JOIN
条件。
答案 1 :(得分:0)
对于左表中的每一行,cross join
重复右表中的每一行。然后,您可以在where
子句中指定任何“无关”条件:
select *
from Table1 t1
cross join
Table2 t2
where t1.col1 = 'N'
and t2.col1 in ('N', 'P')
答案 2 :(得分:0)
在您的方案中,任何联接都将充当交叉联接,因为您在两者中都有很多重复项 表格(表1有100行'P',表2有50行'P'),
select t1.*,t2.*
from Table1 t1
join Table2 t2
where t1.field1 = 'N'
and t2.field1 IN ('N', 'P')
您无法获得100行的要求。因为,table1中的第一行'P'将与50行table2和'P'连接,因此将为table1的每一行输出50行。
如果你真的想要100行,那就把LIMIT
OR TOP
作为过滤条件。
希望这可以帮助你!!!