我需要一个查询,我可以在一个表中选择不在另一个表中的记录
我有2张桌子
TABLE 1: LOGS
TABLE 2: MASTER LIST
Logs =记录日志
主列表=所有注册名称的列表。
示例:
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。
答案 0 :(得分: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
排除了两个表中常见的所有记录。
答案 1 :(得分:-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
)