2015-05-13 101 views
0

即使在運行查詢爲SELECT DISTINCT STATES我得到重複。如何消除MySQL中的重複行?

這是查詢

SELECT COUNT(*) AS `Rows`, `STATE` FROM `bank_database` GROUP BY `STATE` ORDER BY `STATE` LIMIT 100 

這裏是輸出 Double Entries

我需要

63  ANDAMAN AND NICOBAR ISLAND 
7311 ANDHRA PRADESH 
150  ARUNACHAL PRADESH 
... 
and so on 

這裏是我的數據庫結構。 DB Structure

幫助。 在此先感謝。

我有這個疑問

SELECT DISTINCT BRANCH FROM `BANK`.`BANK_DATABASE` WHERE (BANK = '$bank_name' AND STATE = '$state_name' AND DISTRICT = '$district_name')" 

上面的查詢工作正確的某些銀行,並沒有一些。

+2

看起來'狀態'值存在差異。嘗試使用GROUP BY trim(STATE)' – Jens

+2

看起來你在某些狀態上有一些空白字符。試試這個第一個'更新bank_database設置STATE = trim(STATE)',然後運行你的查詢,看看你得到了什麼。 –

+0

@AbhikChakraborty TRIM沒有影響。我試過..'0行受到影響。 (查詢耗時0.5445秒)' –

回答

2

試試這個,一定有一些空格。

 SELECT COUNT(*) AS `Rows`, trim(STATE) FROM `bank_database` 
    GROUP BY trim(STATE) 
    ORDER BY trim(STATE) LIMIT 100 

如果工作正常,請運行此查詢以修復您的數據問題。

update tableName set state = trim(state); 
+0

理想情況下,上面的'update'語句應該注意所有空格字符,但奇蹟般地它不會影響我的數據庫。我的數據本身存在一些不規則性。 –

+0

違規行爲?我可以知道他們是什麼意思嗎? –

+0

'null'或者甚至有'#NAME'和'#STATE'作爲數據而不是實際數據。 –

0

數據不是真的一樣嗎?數據中有空間。

'ANDAMAN AND NICOBAR ISLAND' != 'ANDAMAN AND NICOBAR ISLAND space' 
0

可以使用COUNT(DISTINCT *)這將只計算不同的值

0

我能夠通過這個查詢

UPDATE BANK_DATABASE 
SET STATE = TRIM(TRAILING '\r' FROM STATE) 
WHERE STATE = TRIM(TRAILING '\n' FROM STATE) 

不管怎麼說,以解決上述data anomaly,感謝所有。