2

私はmysqlを使用しており、2つのテーブルがあります

表1

id
324
325
328
350
420
650
850
950

テーブル2

id    mapping_id
324   1
325   2
328   3
350   4
420   5
650   1
850   2

テーブル 1 の ID に欠落しているすべての DISTINCT フィールド mapping_ids のリストを作成したいと考えています。たとえば、id 850 の mapping_id は 2 であるため、1,3,4,5 が欠落しており、id 950 はテーブル 2 に含まれていないため、1,2,3,4,5 が欠落しています。これにより、1、2、3、4、5 の個別のリストが得られるはずです。

さまざまな LEFT JOIN クエリを試しましたが、必要な結果が得られません。前もって感謝します。

4

2 に答える 2

1

id - mappingを使用して組み合わせのマトリックスを作成できcross joinます。サブクエリは、マトリックスのnot inどの部分が空であるかを判断できます。

select  *
from    table1 t1
cross join
        (
        select  distinct mapping_id
        from    table2
        ) mappings
where   not exists
        (
        select  *
        from    table2 t2
        where   t2.id = t1.id
                and t2.mapping_id = mappings.mapping_id
        )
于 2012-08-17T10:59:21.310 に答える
0
select t1.id, t2.mapping_id
from table1 t1, table2 t2
MINUS
select t2.id, t2.mapping_id
from table1 t1
inner join table2 t2 on t1.id = t2.id
于 2012-08-17T10:18:17.747 に答える