这是我的疑问:
create table vi_all as
select
d.primaryid, d.age, d.gndr_cod, d.wt, d.wt_cod, d.reporter_country,
dr.primaryiddrug, dr.role_cod, dr.drug_name,
r.primaryidreac, r.pt,
o.primaryidoutc, o.outc_cod,
i.primaryidindi, i.indi_pt
FROM demo d,
drug dr,
reac r,
outc o,
indi i;
每个表包含至少80K记录和20多个字段,因此很难在多个表上执行select语句;我只想要每个表中有4个或3个字段,所以我想到了这一点,但上面的查询花了5个多小时但仍然没有给出任何结果。
答案 0 :(得分:0)
我的水晶球说你需要这样的东西:
create table vi_all as
select
d.primaryid, d.age, d.gndr_cod, d.wt, d.wt_cod, d.reporter_country,
dr.primaryiddrug, dr.role_cod, dr.drug_name,
r.primaryidreac, r.pt,
o.primaryidoutc, o.outc_cod,
i.primaryidindi, i.indi_pt
FROM demo d
LEFT JOIN drug dr ON d.drug=dr.id
LEFT JOIN reac r ON d.reac=r.id
LEFT JOIN outc o ON d.outc=o.id
LEFT JOIN indi i ON d.indi=i.id;
据我所知,您的查询是从所有表中选择所有结果但不以任何方式关联它们,因此,您可以在新创建的表中获取重复数据。此外,如果你有一些好的外键来关联这些表,性能会相当好。