2015-11-12 48 views
1

我在MySQL中,下表:從MySQL表中選擇符合條件的重複值

Key DI  CI  FD  FA NM Valid_from Valid_to 
0 1224468 123 2012-06-30 3 6 2013-01-23 9999-12-31 
1 1234567 123 2013-12-31 3 10 2014-02-27 2014-03-10 
2 1234567 123 2013-12-31 2 12 2014-03-10 9999-12-31 
3 1234579 123 2013-12-31 3 12 2014-05-15 9999-12-31 
4 1234595 123 2013-12-31 1 12 2014-06-30 9999-12-31 
5 122469 123 2015-11-11 1 6 2015-11-11 9999-12-31 
6 1224470 123 2015-11-11 2 12 2015-11-11 9999-12-31 
7 1224471 123 2015-11-11 3 15 2015-11-11 9999-12-31 
8 1224472 123 2015-11-10 2 13 2015-11-10 9999-12-31 
9 1224473 123 2015-11-10 3 12 2015-11-10 9999-12-31 

如果有記錄具有相同的「FD」,我需要得到那些其中的「 FA「是」1「,如果存在。

基本上,我想要這個輸出。

Key DI  CI  FD  FA NM Valid_from Valid_to 
0 1224468 123 2012-06-30 3 6 2013-01-23 9999-12-31 
4 1234595 123 2013-12-31 1 12 2014-06-30 9999-12-31 
5 122469 123 2015-11-11 1 6 2015-11-11 9999-12-31 
8 1224472 123 2015-11-10 2 13 2015-11-10 9999-12-31 
9 1224473 123 2015-11-10 3 12 2015-11-10 9999-12-31 

我曾嘗試下面的代碼,但它給出了一個怪異的輸出:

代碼:

SELECT T1.* 
    FROM findoc T1 LEFT JOIN 
    findoc T2 
    ON DATE(T1.`Financial_date`) = DATE(T2.`Financial_date`) AND T2.`Fig_audit` <> 1 
    WHERE T2.`Fig_audit` IS NULL OR T1.`Fig_audit` = 1 

輸出:

Key DI  CI  FD  FA NM Valid_from Valid_to 
4 1234595 123 2013-12-31 1 12 2014-06-30 9999-12-31 
4 1234595 123 2013-12-31 1 12 2014-06-30 9999-12-31 
4 1234595 123 2013-12-31 1 12 2014-06-30 9999-12-31 
5 122469 123 2015-11-11 1 6 2015-11-11 9999-12-31 
5 122469 123 2015-11-11 1 6 2015-11-11 9999-12-31 

它看起來複雜的查詢,我無法做到這一點。

我該怎麼辦?

謝謝。

+1

您預期的結果不顯示,只有FA記錄= 1 – Marc

回答

1

你可以做case based aggregation找出是否存在與同日行和用於至少一個行與列值FA爲1

select F.* from finddoc F 
inner join 
(
select fd , sum(case when fa = 1 then 1 else 0 end) as faOneCount 
from finddoc 
group by fd 

) T 
on (F.FD = T.FD and T.faOneCount = 1 AND F.FA =1) 
or (F.FD = T.FD and T.faOneCount =0) 
1

如果我正確理解你的問題(我不知道我這樣做),你可以嘗試這樣的事:

SELECT T1.* 
    FROM findoc T1 
    where T1.NM in (select distinct NM from findoc where FA = 1); 

我假設NM是要共同項目如果這些NM條目中的任何一個的FA1,則返回所有結果。但這可能是一個錯誤的假設。

+0

嗨馬克,謝謝你的答案。但它不起作用。它給出錯誤的輸出。它給出沒有第0行的同一個表。 – yusuf

+1

這是什麼意思?你沒有提供什麼你想要的清晰度。分別運行子查詢,看看是否得到你想要的(它應該)。從那裏排除故障。 – Marc

+0

你想看看輸出嗎?它不會按我的意願提供輸出。 – yusuf