0

3つのテーブルA、B、Cのいずれかからの複数のIDを持つ1つのテーブル「ルール」があります。

構造は次のようになります。


テーブル=ルール

列=ID

ID 
--

222

333

555

7899

テーブル=A

列=ID、Eメール

ID        Email

111       test111@gmail.com
555       test555@gmail.com

テーブル=B

列=ID、Eメール

ID        Email

222       test222@gmail.com
7899      test7899@gmail.com

テーブル=C

列=ID、Eメール

ID        Email

333       test333@gmail.com
444       test444@gmail.com

次のような結果が必要です:

ID    Email

222   test222@gmail.com

333   test333@gmail.com

555   test555@gmail.com
7899  test7899@gmail.com

注:A、B、Cテーブルには、さらにいくつかの情報が含まれていますが、完全に同一ではありません。

4

2 に答える 2

0
SELECT  d.*
FROM    rule
CROSS APPLY
        (
        SELECT  id, email
        FROM    a
        WHERE   a.id = rule.id
        UNION ALL
        SELECT  id, email
        FROM    b
        WHERE   b.id = rule.id
        UNION ALL
        SELECT  id, email
        FROM    c
        WHERE   c.id = rule.id
        ) d

idが複数のテーブルに存在する場合、それを含むすべてのテーブルのレコードが返されることに注意してくださいid

于 2013-03-26T10:47:38.173 に答える
0
select
    r.id,
    e.email
from rule r
left outer join (
    select id, email from A
    union all 
    select id, email from B
    union all
    select id, email from C
    ) as e on r.id = e.id

これにより、テーブルA、B、またはCに一致するレコードがない場合でも、「ルール」テーブルからすべてのレコードが返されます。

于 2013-03-26T13:45:58.630 に答える