-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: マスターリストに名前が含まれていない行を選択します。

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 に答える