0

我有两个表,我想在其中显示 MBA 表中存在但未保存在 PIX 表中的 Id

像素

 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

工商管理硕士

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 JOINMBA带有谓词的表IS NULL仅显示在另一个表中没有条目的那些行PIX。就像是:

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 回答