0

MBA テーブルには存在するが PIX テーブルには保持されていない Id を表示したいテーブルが 2 つあります。

PIX

 Id Channel Product ProgDate    ProgStartTime   ProgEndTime 
    2   PIX Parachute Advansed  2011-04-02  18:00:00.0000000    01:00:00.0000000
    5   PIX Parachute Advansed  2011-04-02  18:00:00.0000000    01:00:00.0000000
    6   PIX Parachute Advansed  2011-04-02  23:00:00.0000000    01:00:00.0000000

MBA

mbaID   Channel Product-MAP Progdate-MAP    AdvTime 
2   PIX Parachute Advansed  4/2/11  19:54:56
3   PIX Parachute Advansed  4/2/11  19:15:59
4   PIX Parachute Advansed  4/2/11  22:26:28
5   PIX Parachute Advansed  4/2/11  21:47:01
6   PIX Parachute Advansed  4/3/11  0:31:08
7   PIX Parachute Advansed  4/3/11  0:17:23

表示するには、 3 、 4 、および 7 の列が必要です。しかし、JOin を実行すると、重複が発生します。助けてください

4

2 に答える 2

2

LEFT JOIN他のテーブルにエントリがない行のみを表示MBAする述語を持つテーブル。何かのようなもの:IS NULLPIX

SELECT MBA.*
FROM MBA 
LEFT JOIN PIX ON MBA.mbaID = pix.id
WHERE pix.Id IS NULL;

SQL フィドルのデモ

これにより、ID 3、4、7 の行が得られます。

| MBAID | CHANNEL | PRODUCTMAP | PROGDATEMAP |                      ADVTIME |
-----------------------------------------------------------------------------
|     3 |     PIX |  Parachute |    Advansed | April, 02 1911 21:15:59+0000 |
|     4 |     PIX |  Parachute |    Advansed | April, 03 1911 00:26:28+0000 |
|     7 |     PIX |  Parachute |    Advansed | April, 03 1911 02:17:23+0000 |

NOT INの代わりに述語を使用することもできますJOIN

SELECT MBA.*
FROM MBA 
WHERE mbaid NOT IN(SELECT id
                   FROM PIX 
                   WHERE id IS NOT NULL);

SQL フィドルのデモ

于 2013-03-18T07:00:09.020 に答える
0

使用するSUBQUERY

select distinct mbaid from mba where mbaid not in (select distinct id from pix)

使用するLEFT OUTER JOIN

select distinct mbaid from mba,pix where mba.mbaid=pix.id(+) and pix.id is null;
于 2013-03-18T07:18:07.287 に答える