同じカラム名を持つテーブルAとテーブルBの2つのテーブルがあります。テーブルAには存在しないがテーブルBに存在するレコードを取得したい。2つのテーブル間で珍しいレコードを選択する - mysql
ありがとうございます。
同じカラム名を持つテーブルAとテーブルBの2つのテーブルがあります。テーブルAには存在しないがテーブルBに存在するレコードを取得したい。2つのテーブル間で珍しいレコードを選択する - mysql
ありがとうございます。
Select * from tableb left join tablea on tableb.column = tablea.coulmn where tablea.column is null
ありがとう、これは私のために働きます! – user375947
except
またはminus
をサポートするデータベースもあります。しかし、MySQLではありません。私はnot exists
をお勧めします:任意の列がNULL
値を持っている場合、これは動作しないこと
select b.*
from b
where not exists (select 1
from a
where a.col1 = b.col1 and a.col2 = b.col2 and . . .
);
注意を。
NULL
を処理する必要がある場合は、(not a.col1 <=> b.col1) and (not a.col2 <=> b.col2) . . .
を使用できます。または、集約を使用することができます。
select col1, col2, . . .
from ((select a.*, 1 as is_a, 0 as is_b
from a
) union all
(select b.*, 0, 1
from b
)
) ab
group by col1, col2, . . .
having max(is_a) = 0 and max(is_b) = 1;
主キーが同じ場合(たとえば、idフィールド)、行が同じであるとします。
select id from b where id not in (select id from a)
テーブルに主キーがない場合や、一致しない場合は、クエリをテーブル構造に変更できます。
参照[なぜ私は非常に単純なSQLクエリであることを私には思える何のためにMCVEを提供する必要があります](http://meta.stackoverflow.com/questions/333952/に参加し、左を使用しますなぜ、私が提供する、何のためのものなのでしょうか? – Strawberry