Sql 从一个表中选择第二个表中不可用的行
我需要一个查询,在该查询中,我可以选择一个表中不在另一个表中的记录 我有两张桌子Sql 从一个表中选择第二个表中不可用的行,sql,oracle,Sql,Oracle,我需要一个查询,在该查询中,我可以选择一个表中不在另一个表中的记录 我有两张桌子 TABLE 1: LOGS TABLE 2: MASTER LIST 日志=记录日志 主列表=所有注册名称的列表 例如: LOGS HOST | USER | NAME ================== 1 | A | A1 1 | A | A1 1 | A | A1 1 | A | D1 MASTER HOST | USER | NAME ========
TABLE 1: LOGS
TABLE 2: 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:主列表中未包含名称的行。只需像这样使用
左连接即可:
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 ║
╚══════╩══════╩══════╝
此处其中M.Name为空
排除两个表中的所有公共记录
看见
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
)