假设我有接下来的 2 张桌子。在第一个,我有最可信的信息。第二个信息不太可靠。这个想法是创建第三个表,保留第一个表的所有信息,并仅添加第一个表没有的字段。
初始表
user rank id_best
1 1 'A'
1 2 'P'
1 3 'E'
2 1 'Q'
2 2 'E'
3 1 'P'
3 2 'O'
3 3 'C'
中间表
user rank id_best
1 1 'B'
1 2 'D'
1 3 'R'
1 4 'Q'
1 5 'W'
2 1 'T'
2 2 'Y'
2 3 'S'
2 4 'Q'
2 5 'E'
3 1 'Y'
3 2 'E'
3 3 'S'
3 4 'A'
3 5 'T'
决赛桌
user rank id_best
1 1 'A'
1 2 'P'
1 3 'E'
1 4 'Q'
1 5 'W'
2 1 'Q'
2 2 'E'
2 3 'S'
2 4 'Q'
2 5 'E'
3 1 'P'
3 2 'O'
3 3 'C'
3 4 'A'
3 5 'T'
这是一个优先级查询。一种方法使用如下union all
逻辑:
select o.*
from original o
union all
select i.*
from intermediate i
where not exists (select 1
from original o
where o.user = i.user and o.rank = i.rank
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句