0

我有一个包含两个文本字段的表,它们的索引长度 = 4。

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 SELECTetc.(没有 COUNT)时,它会告诉我以下信息:

id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE mytable index_merge field1,field2 field1,field2 6,6 NULL 495 使用 sort_union(field1,field2); 使用哪里

这怎么可能?为什么我看不到全部 8 条记录?

(注:我已经替换了表名,因为实名是荷兰人)

如果您需要更多表格信息,我会发布。

请帮忙。

4

2 回答 2

0

只需这样做'SELECT * FROM mytable WHERE field1 = ‘blue’ OR field2 = ‘blue’;',您就会看到您的问题:) 这实际上不是问题,因为field1并且两者都可能连续field2具有价值blue

于 2012-10-26T13:25:34.707 回答
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’;
于 2012-10-26T13:24:54.353 回答