这是我的查询,它使用两个子查询和临时表:
select visit.pid, visit.pidvnum, visit.hpv16, visit.qc_hst
FROM visit,
(select distinct x.pid from
(select pid from visit where visit.qc_hst = 1) x,
(select pid from visit where visit.hpv16 = 1) y
where x.pid = y.pid) as subtbl
where visit.pid = subtbl.pid
AND (visit.qc_hst = 1 OR visit.hpv16 =1);
有没有办法重写这个查询来消除一个或两个子查询?我还使用了带有相同两个子查询的 IN 子句,但这更糟。我无法索引像 qc_hst 和 hpv16 这样的字段,因为它们有几十个,而且它们中的任何一个都可能成为查询的一部分。
这是一个 sqlfiddle 链接:http ://sqlfiddle.com/#!2/68bd6/6/0
非常感谢 - 我真的把我的头撞到墙上了......