-1

我需要一个查询,我可以在其中选择一个表中不在另一个表中的记录

我有 2 张桌子

TABLE 1: LOGS
TABLE 2: MASTER LIST

Logs = 记录日志
Master list = 所有注册名称的列表。

例子:

LOGS
HOST | USER | NAME
==================
1    | A    | A1 
1    | A    | A1
1    | A    | A1
1    | A    | D1

MASTER
HOST | USER | NAME
===================
1    | A    | A1
1    | A    | B1
1    | A    | C1

结果应该是:

HOST | USER | NAME
==================
1    | A    | D1

选择名称未包含在表 2:Masterlist 中的行。

4

2 回答 2

2

像这样简单地使用LEFT JOIN

   SELECT L.* 
     FROM Logs L
LEFT JOIN Master M
       ON L.Name = M.Name
     WHERE M.Name IS NULL

结果:

╔══════╦══════╦══════╗
║ HOST ║ USER ║ NAME ║
╠══════╬══════╬══════╣
║    1 ║ A    ║ D1   ║
╚══════╩══════╩══════╝

这里WHERE M.Name IS NULL排除了两个表中共有的所有记录。

看到这个 SQLFiddle

于 2013-05-31T09:10:10.843 回答
-1
select * from table1 
where not exists
(
  select host, user, name
  from table2
  where table2.host = table1.host and 
        table2.user = table1.user and 
        table2.name = table1.name
)
于 2013-05-31T09:10:35.193 回答