Я пытаюсь сгруппировать несколько столбцов вместе, которые имеют определенные соответствующие строки.
SELECT GROUP_CONCAT('users'.'id')
FROM 'users'
WHERE 'users'.'name'
IN ('john','doe','foo','bar');
Я не получаю сообщение об ошибке, только результат равен NULL
, хотя в таблице есть столбцы со всеми этими именами.
Как структурировать мой запрос для достижения ожидаемого результата?
В: Как структурировать мой запрос для достижения ожидаемого результата?
A: Резервное копирование в предыдущий запрос, тот, который работал, и возвращение ожидаемых результатов. И затем выясните, почему изменение, внесенное вами в этот запрос, вызвало непреднамеренное поведение/неожиданные результаты.
Например, вероятно, вы начали писать запрос следующим образом:
SELECT u.id
, u.name
FROM users u
ORDER
BY u.name
И вы запустили это, чтобы проверить его, и убедитесь, что он вернул ожидаемые результаты. Является ли id
не-NULL. Является ли колонка name
заполненной?
Затем вы добавили WHERE
, чтобы узнать, можете ли вы получить строки с столбцом name
содержащим "john".
SELECT u.id
, u.name
FROM users u
WHERE u.name = 'john'
ORDER
BY u.name
Получили ли это ожидаемые результаты при запуске? Если нет, нам нужно выяснить, почему нет. Что отличается от этого запроса, чем тот, который работал.
Как далеко мы дошли до этого поэтапного уточнения, написав запрос, прежде чем попали в запрос, возвращающий неожиданные результаты? Покажи нам это.
И затем объясните, почему изменение, внесенное в этот запрос, в другой запрос, должно привести к определенному результату. т.е. какие результаты являются "ожидаемым результатом". И почему ожидается этот исход?
При отсутствии спецификации невозможно сделать какие-либо рекомендации. Образцы данных и вывод примеров будут иметь большое значение для разъяснения требований. Вы даже можете задуматься над тем, как настроить пример SQLFiddle.
Если вы попросите помощника по работе за работу, вам нужно показать какую-то работу, как далеко вы добрались. Вместо того, чтобы просто "здесь запрос, который не работает".
https://ericlippert.com/2014/03/05/how-to-debug-small-programs/
В противном случае мы просто догадываемся о том, какой результат вы ожидаете вернуть.
Может быть, ответ так же просто, как обертывание выражения в IFNULL
SELECT IFNULL( GROUP_CONCAT(foo) ,'') AS bar
,
Но мы, скорее всего, лаем, догадываемся о совершенно неправильном дереве.
name
.