Этот запрос:Почему HAVING и GROUP_CONCAT не работают вместе в этом запросе?
SELECT name,
REPLACE(REPLACE(REPLACE(LOWER(name),' ',''),'-',''),':','') AS formattedName,
GROUP_CONCAT(service)
FROM movies
GROUP BY formattedName
HAVING COUNT(CASE WHEN name like "%von brom%" THEN 1 END) > 0;
дает мне следующий результат:
+---------------------------------------------+---------------------------------------+---------------------+
|name |formattedName |GROUP_CONCAT(service)|
+---------------------------------------------+---------------------------------------+---------------------+
|LasseMajas detektivbyrå: Von Broms hemlighet |lassemajasdetektivbyråvonbromshemlighet|sfanytime |
+---------------------------------------------+---------------------------------------+---------------------+
|LasseMajas detektivbyrå - Von Broms hemlighet|lassemajasdetektivbyråvonbromshemlighet|boxer |
+---------------------------------------------+---------------------------------------+---------------------+
|LasseMajas detektivbyrå - Von Broms hemlighet|lassemajasdetektivbyråvonbromshemlighet|viaplay |
+---------------------------------------------+---------------------------------------+---------------------+
Все значения в столбце «formattedName» выглядят одинаково, так почему бы не строки сгруппированы вместе?
Если я использую WHERE
для фильтрации строк, вместо HAVING
, это действительно работает. Это дает мне один ряд в результате, с sfanytime,boxer,viaplay
в столбце GROUP_CONCAT(service)
. Но мне нужно иметь фильтр в HAVING
, потому что иначе я не получу всю необходимую мне информацию в некоторых случаях.
Он также работает, если я заменяю GROUP_CONCAT(service)
только service
. Это только терпит неудачу, если я использую GROUP_CONCAT
и HAVING
Все это от phpMyAdmin в базе данных по https://www.one.com. Если я попытаюсь сделать то же самое в идентичной локальной базе данных на своем собственном компьютере с помощью Workbench MySQL, все будет работать так, как ожидалось, и строки сгруппированы во всех случаях (HAVING
/WHERE
с или без GROUP_CONCAT
).
В чем причина этого странного поведения? Может ли это быть чем-то связанным со специальным персонажем «å»?
Мой character_set_server
установлен в utf8
в локальной базе данных и до latin1
в базе данных one.com.
Вызов SELECT @@version;
на базе One.com дает мне:
5.5.45-MariaDB-1~wheezy
А на локальной базе данных дает мне:
5.7.9-log
Похоже несовместимости MariaDB и реальной MySQL. – Barmar
Вы уверены, что в поле 'name' нет непечатаемых символов? – Uueerdo
@Uueerdo Как я могу это проверить? – Istlemin