2013-03-08 22 views
2

我需要表(hmmscan1arath_scan),我想加入。他們都顯示相同的列名稱,並且arath_scan是包含在hmmscan1中的較小表格。現在我只想選擇hmmscan1的條目,其中hmmscan1arath_scan的某個列(domain_name)同意。內部連接:Mysql打印比可用行更多的行(相同的多行)

我用下面的命令:

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,我實際上可以想減少更多的行....所以不是〜10.000行,我得到500.000有許多條目的行。

有人知道爲什麼嗎?

+1

嘗試使用DISTINCT。 – 2013-03-08 14:10:36

回答

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; 

OR集團通過你想成爲獨特的任何列。如h.query_prot_id

+0

感謝您的快速回答! – 2013-03-08 14:55:03

+0

歡迎您!祝好運! – 2013-03-08 15:02:43

0

的另一種方法來解決這個特定的問題:

選擇不同h.query_prot_id,h.taxon_schema,h.prot_id,從arath_scan一個h.domain_name,hmmscan1 H,其中a.query_prot_id = h.query_prot_id和a.domain_name = h.domain_name;

我不得不在where子句中使用distinct選項和兩個限制。

+0

這也工作得很好! – 2013-03-12 15:00:41