2

我必须要加入的表(hmmscan1arath_scan)。它们都显示相同的列名,并且arath_scan是一个较小的表,包含在hmmscan1. 现在我只想选择hmmscan1某个列 ( domain_name) 的条目hmmscan1arath_scan同意。

我使用了以下命令:

SELECT h.auto_inc, 
       h.query_prot_id, 
       h.taxon_schema, 
       h.domain_name 
FROM   hmmscan1 AS h 
       INNER JOIN arath_scan 
               ON h.domain_name = arath_scan.domain_name; 

结果是我得到的行数超过了可用的行数hmmscan1,而我实际上想减少这些行数。所以我得到了 500.000 行而不是 ~10.000 行,其中包含许多多个条目。

有人知道为什么吗?

4

2 回答 2

2

你需要一个group by。试试这个

    select h.auto_inc,h.query_prot_id,h.taxon_schema, h.domain_name 
    from hmmscan1 as h 
    inner join arath_scan on h.domain_name=arath_scan.domain_name
    GROUP BY h.domain_name;

按您想要区分的任何列分组。作为h.query_prot_id

于 2013-03-08T14:10:12.130 回答
0

解决此特定问题的另一种方法:

从 arath_scan a、hmmscan1 h 中选择不同的 h.query_prot_id、h.taxon_schema、h.prot_id、h.domain_name 其中 a.query_prot_id = h.query_prot_id 和 a.domain_name = h.domain_name;

我不得不在 where 子句中使用 distinct 选项和两个限制。

于 2013-03-08T14:55:59.223 回答