2016-06-17 38 views
0

表1只有1行3列。表2有2列,但有许多行。 我想找到其中存在3行表2中具有匹配柱2,但各行的第1列等于每列于表1。一个查询可以比较一个表中一行中的多个列,并且第二个表中的一列中的所有数据都可以比较

实施例:

表1

| A | B | C |

表2

| A | 1 |

| A | 3 |

| B | 1 |

| B | 3 |

| C | 1 |

| C | 2 |

| C | 3 |

| D | 3 |

查询结果:

| 1 |

| 3 |

“1”和“3”都是吐出来的,因为它们在第一列中都有对应的'A','B'和'C'。

对不起格式化,但我希望你明白。我在Microsoft Access SQL中这样做,但我不认为这涉及到我在找的东西。

+0

您能否给予更多的上下文。你想要做的事情可以完成,但我怀疑这个问题有一个更简单的方法,只有没有足够的信息来找到另一种方法。 –

+0

什么是每个表的字段(列)名称 – dbmitch

回答

0

所以最简单的方法来做到这一点,如果你有少量的列是unions。通过从Table1union all的所有3列中一次选择1列,可以有效地将该表的格式更改为与table2相同,然后您可以在该点执行inner join

;WITH cteTransformTable1 AS (
    SELECT 
     'A' as Col1 
     ,[A] AS Col2 
    FROM 
     Table1 

    UNION ALL 

    SELECT 
     'B' as Col1 
     ,[B] AS Col2 
    FROM 
     Table1 

    UNION ALL 

    SELECT 
     'C' as Col1 
     ,[C] AS Col2 
    FROM 
     Table1 
) 

SELECT * 
FROM 
    cteTransformTable1 t1 
    INNER JOIN Table2 t2 
    ON t1.Col1 = t2.Col2 
    AND t1.Col2 = t2.Col2 
相关问题