2015-02-05 1 views
1

У меня есть проблема с большим запросом, но попытался упростить его и нашел подобное странное поведение:MySQL 5.6 Количество InnoDB, группа по, имея и порядок Ответным ошибочный результат

select concat(a.col1,a.col2) as b, 
     count(a.id) as c 
from test as a 
group by a.id 
having b = "644591" 
order by b 

Тот же запрос не возвращает результатов на 5.6 InnoDB, но 5.5 MyISAM возвращает одно правильное совпадение.

Если вы удалите «заказ на b», он также корректно вернется на InnoDB.

Таблица:

CREATE TABLE `test` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `col1` varchar(100) NOT NULL DEFAULT '', 
    `col2` varchar(100) NOT NULL DEFAULT '', 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB 

id|col1 |col2 
1|  |644591 
2|70083531|1226109 
+0

Ваша строка должна быть в одинарных кавычках: имеющей Ь = '644591' – Jens

+0

@Jens Вы уверены? – Strawberry

+0

@Strawberry Да – Jens

ответ

0

Как насчет ...

select concat(a.col1,a.col2) as b, 
     count(a.id) as c 
from test a 
where concat(a.col1,a.col2) = '644591' 
group by concat(a.col1,a.col2) 
order by b; 
+0

. Причина в том, что большой запрос, который не возвращал правильные строки, уже имеет место, где и группировка, и THEN необходимо применить фильтр к результату. Такой простой запрос должен возвращать тот же результат на innodb и myisam. – phict