2012-10-26 214 views
0

我有兩個文本字段的表,兩者都具有長度的索引= 4Mysql表損壞?

SELECT COUNT(*) cnt FROM `mytable` WHERE `field1` = ‘blue’; 

顯示我4個記錄和

SELECT COUNT(*) cnt FROM `mytable` WHERE `field2` = ‘blue’; 

顯示我另一個4條記錄(不同的結果)

但是:

SELECT COUNT(*) cnt FROM `mytable` WHERE `field1` = ‘blue’ OR `field2` = ‘blue’; 

顯示我只有5條記錄!爲什麼???

當我使用DESCRIBE SELECT等(不COUNT)它告訴我下面的:

ID SELECT_TYPE表類型possible_keys關鍵key_len裁判行額外 1個SIMPLE MYTABLE index_merge字段1,字段2字段1,字段2 6,6 NULL 495使用sort_union(field1,field2);使用其中

這怎麼可能?爲什麼我看不到所有8條記錄?

(注:我已經更換了表名,因爲真正的名字是荷蘭)

如果您需要更多的表信息,我將它張貼。

請幫忙。

+2

結果,其中字段1是藍色或field2是藍色可能會重疊。 –

回答

0

你需要

SELECT COUNT(*) cnt FROM mytable WHERE field1 = ‘blue’ AND field2 <> ‘blue’; 
SELECT COUNT(*) cnt FROM mytable WHERE field2 = ‘blue’ AND field1 <> ‘blue’; 
SELECT COUNT(*) cnt FROM mytable WHERE field2 = ‘blue’ AND field1 = ‘blue’; 
+0

第一個查詢:8條 第二個查詢:8條 第三個查詢:0記錄 –

+0

你確定,你擁有所有的'field1'和'field2'和'='和'<>'吧? –

0

只要做'SELECT * FROM mytable WHERE field1 = ‘blue’ OR field2 = ‘blue’;',你會看到你的問題:)這其實並不是一個問題,因爲field1field2可能都在一排具有價值blue

+0

有有在這兩個領域相同的值沒有任何記錄。 SELECT COUNT(*)FROM CNT WHERE MYTABLE FIELD2 = '藍色' AND FIELD1 = '藍色'; 顯示爲0的記錄。 –