0

2 つのテキスト フィールドを持つテーブルがあり、どちらも長さ = 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); の使用; where の使用

これはどのように可能ですか?8 つのレコードすべてを表示できないのはなぜですか?

(注: 本名はオランダ語なので、テーブル名を置き換えました)

さらにテーブル情報が必要な場合は、投稿します。

助けてください。

4

2 に答える 2

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 に答える
0

実行するだけで'SELECT * FROM mytable WHERE field1 = ‘blue’ OR field2 = ‘blue’;'、問題が表示されます:)これは実際には問題ではありません。field1両方が連続しfield2て値を持つ可能性があるためですblue

于 2012-10-26T13:25:34.707 に答える