3

私はこのような2つのテーブルを持っています

+------+-------+------+------+---------+
| NAME |SURNAME|DEPART| POST |EMPLOYEE#|
+------+-------+------+------+---------+
| JACK | LONDON| 111  |WRITER| 12345678|
|......|.......|......|......|.........|
+------+-------+------+------+---------+

+------+-------+------+------+---------+
| NAME |SURNAME|DEPART| POST |  LOGIN  |
+------+-------+------+------+---------+
| MARK | TWAIN | 222  |WRITER| MTWAIN  |
|......|.......|......|......|.........|
+------+-------+------+------+---------+

表2に存在しないレコードを表1で検索し、そのようなレコードのすべてのフィールドを返す必要があります。

私はこのようなコードを使用しています...

SELECT name,depart FROM tb1 EXCEPT SELECT name,depart FROM table2

予想どおり、結果はNAME、DEPARTの2つのフィールドのみです。

4

3 に答える 3

7

基本的にはこれで使えますLEFT JOIN。のレコードでのTable1一致が見つからないTable2場合、 の列の値の結果はNULLTable2になるため、一致しない値を除外するには、table2のNULL値をチェックする条件を追加します。

SELECT  a.*
FROM    Table1 a
        LEFT JOIN Table2 b
            ON a.name = b.name AND
                a.depart = b.depart
WHERE   b.Name IS NULL

結合についてさらに詳しく知りたい場合は、以下のリンクにアクセスしてください。

于 2013-03-22T12:52:51.387 に答える
1

人を一意に識別するには名前、姓、および出発で十分であると仮定して、次のことを試してください。

select t1.*
from tb1 t1
where not exists
(select 1
 from table2 t2
 where t1.name = t2.name and 
       t1.surname = t2.surname and 
       t1.depart = t2.depart)
于 2013-03-22T12:59:39.497 に答える
0
select *
from tb1
minus
select *
from tb2
于 2015-09-07T09:45:23.900 に答える