SQL查询JOIN表具有不同的值

时间:2012-12-28 11:35:53

标签: sql

我遇到过一种情况,我需要根据具有不同值的列加入两个表。

E.g。

  • Table1T1
  • Table2T2

  • T1有100行,其值为P

  • T2有50行,其值为N,50行的值为P

我希望将Table1与值P的{​​{1}}合并为Table2,其值N以及P

它应该给我总共100条记录。

3 个答案:

答案 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获取值为NP的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作为过滤条件。

希望这可以帮助你!!!