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

我想为表一中的 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 回答