我有一個這樣的列的表;重寫子查詢將子句放入連接中?
網站,染色體,鏈。
這對位點和染色體應該是唯一的,而它們可以有多於一條鏈。 加載數據之前,我發現一些網站有一個以上的染色體,這顯然是一個錯誤。我試圖找出錯誤,這是超過1染色體的網站。我已經考慮過了,無法提供正確的SQL。 所以我分了這個問題。首先,我創建一個表格,選擇不同的記錄;
create table distinct_pair
as select distinct site, chromosome
from original_table;
然後我可以找到有多個染色體的網站,
select site
from distinct_pair
group by site
having count(site)>1;
它工作正常。然後嘗試從原始表格中查看錯誤的全部信息,我這樣做了;
select * from original_table
where site
in (select name from distinct_pair
group by site
having count(site)>1);
然後這個子查詢太慢了,即使列都被索引了。
我試圖重寫查詢作爲一個連接,但讓它變得困難。 請幫幫我。
===================
感謝大家誰回答了這個問題。 我的數據看起來像這樣。
Site | Chromosome | Strand
N111 | 2L | +
N111 | 2L | -
N112 | 2L | +
N112 | 2L | -
N112 | 3L | +
N112 | 3L | -
....
在這種情況下,N111很好,但N112是一個錯誤,因爲它有兩個染色體數據。第二個答案的子查詢中選取了N111和N112,因爲這個鏈是我的問題。按功能分組的多列工作組與我所猜測的不同。然而,這個建議的答案給了我一個線索,讓我可以稍微修改它以使其工作。這兩個答案給出了相同的結果。 再次感謝你們。
網站
感謝。它也適用於一些修改。我應該更清楚地說出數據。這裏是修改後的MySQL版本。 (名稱)> 1的姓名,染色體從(選擇名稱,染色體from nature06929_s2 group by name,染色體)作爲T group by name; – microbe 2010-11-26 14:59:45
我試圖解釋一些,但我不熟悉如何格式化我的意見。對不起... – microbe 2010-11-26 15:12:50