我有几个表有一个UDID(惟一ID)和一些其他信息。我试图合并这些表,以便每个UDID在最后一个表中出现一次。我所有输入表中的数据看起来都是正确的,理论上讲也很有意义。然而,当我查看输出表时,我会一遍又一遍地看到相同的数据。
以下是查询:

create table roi_wide_ss_gen_all as
select a.udid, a.src, a.tm8,a.tm7,a.tm6,a.tm5,a.tm4,a.tm3,a.tm2,a.tm1, a.t1, a.t2, a.t3, a.t4, a.t5,a.t6,a.t7,a.t8
       , pf_m, female, asam, pf_50, pf_150, pf_250, pf_251
from roi_wide_ss_gen a
    left outer join roi_wide_ss_gen_m b on (a.udid = b.udid)
    left outer join roi_wide_ss_gen_f c on (a.udid = c.udid)
    left outer join roi_wide_ss_gen_k d on (a.udid = d.udid)
    left outer join roi_wide_ss_gen_50 e on (a.udid = e.udid)
    left outer join roi_wide_ss_gen_150 f on (a.udid = f.udid)
    left outer join roi_wide_ss_gen_250 g on (a.udid = g.udid)
    left outer join roi_wide_ss_gen_251 h on (a.udid = h.udid)
    left outer join roi_wide_ss_gen_as i on (a.udid = i.udid)
;

下面是输出表的前几行:
             udid src tm8 tm7 tm6 tm5 tm4 tm3 tm2 tm1 t1 t2 t3 t4 t5 t6 t7 t8 pf_m female asam pf_50 pf_150 pf_250 pf_251
 2b4821ecf223b1f6   1   0   0   0   0   4   6   2   0  0  0  0  0  0  0  0  0    0      1       1     0      0      0      0
 2b4821ecf223b1f6   1   0   0   0   0   4   6   2   0  0  0  0  0  0  0  0  0    0      1       1     0      0      0      0
 2b4821ecf223b1f6   1   0   0   0   0   4   6   2   0  0  0  0  0  0  0  0  0    0      1       1     0      0      0      0
 2b4821ecf223b1f6   1   0   0   0   0   4   6   2   0  0  0  0  0  0  0  0  0    0      1       1     0      0      0      0
 2b4821ecf223b1f6   1   0   0   0   0   4   6   2   0  0  0  0  0  0  0  0  0    0      1       1     0      0      0      0

如果我让它持续100行,那么数据最终会发生一些变化,如下所示
2b4821ecf223b1f6   1   0   0   0   0   4   6   2   0  0  0  0  0  0  0  0  0    0      1       1     0      0      0      0
2b4821ecf223b1f6   1   0   0   0   0   4   6   2   0  0  0  0  0  0  0  0  0    0      1       1     0      0      0      0
a6ce599b8344bb4c   1   0   0   0   0   1   0   0   0  0  0  0  0  0  0  0  0    1      1       0     0      0      0      0
3f1448b00f8d8031   0   0   0   0   0   0   0   0   1  0  1  1  1  0  0  0  0    1      1       0     0      0      0      0
fca0bd81bdc66de5   0   0   0   0   0   0   0   0   0  0  0  0  0  0  0  0  1    1      1       0     0      0      0      0
fca0bd81bdc66de5   0   0   0   0   0   0   0   0   0  0  0  0  0  0  0  0  1    1      1       0     0      0      0      0

但它仍然不是每一个UDID应该是为大多数UDID的一行。我可以发誓我有这个正确的工作在过去,但。。。

最佳答案

您的一个表中应该有一个重复的udid-如果您对udid没有唯一约束,请检查

select udid from ... group by udid having count(*) > 1

在你的桌子上找出

关于sql - 带有多个左外部联接的Postgres创建表为选择查询产生重复的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18321756/

10-11 02:54
查看更多