Mysql таблица повреждена?

У меня есть таблица с двумя текстовыми полями, оба имеют индекс длины = 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 SELECT и т. д. (без учета COUNT) говорит мне следующее:

id select_type тип таблицы Возможные_ключи Ключ key_len ref Строки Extra 1 ПРОСТОЙ mytable index_merge field1,field2 field1,field2 6,6 NULL 495 Использование sort_union(field1,field2); Используя где

Как это возможно? Почему я не вижу все 8 записей?

(Примечание: я заменил имена таблиц, потому что настоящие имена голландские)

Если вам нужна дополнительная информация о таблице, я опубликую ее.

Пожалуйста помоги.

2 ответа

Тебе нужно

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’;

Просто делать 'SELECT * FROM mytable WHERE field1 = ‘blue’ OR field2 = ‘blue’;' и вы увидите свою проблему:) которая на самом деле не проблема, потому что field1 а также field2 может иметь значение blue в ряд

Другие вопросы по тегам