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
в ряд