我遇到这个问题,我的查询速度很慢,我相信这是因为查询中的IN
语句。
看起来像这样:
SELECT * FROM genes g,
(SELECT DISTINCT gene_symbol, score FROM page_genes, genes WHERE
page_genes.page_id IN
(SELECT page_id FROM findzebra2.page WHERE umls_concept_id ='c0007361')) AS t
WHERE g.gene_id = t.gene_symbol
我听说过使用JOIN语句,但无法弄清楚如何替换它。
表格
基因
page_genes
findzebra2.page
预期输出
它应与 genes 相同,但过滤后的数据与查询相对应。
答案 0 :(得分:3)
如果我理解了您的问题,那么您的查询应该是
SELECT g.* FROM genes g JOIN page_genes p on g.gene_id = p.gene_symbol JOIN findzebra2 f ON p.page_id = f.page_id WHERE f.umls_concept_id = 'c0007361';
答案 1 :(得分:0)
试试这个。
select g.*
from genes g
join page p on p.gene_symbol = g.gene_id and p.umls_concept_id = 'c0007361'
join page_genes pg on pg.page_id = g.gene_id