Всем привет. Такая задача:
UPDATE `table` SET `colum` = (SELECT * FROM `table2 WHERE visible = 1 LIMIT 0,1) WHERE `id` = 12`
Все работает пока возвращает один ответ. Если же убрать LIMIT
начинает ругаться что ответ не один. Можно ли как то превратить ответ в строку. Чтобы работало без LIMIT
(пожалуйста не спрашивайте зачем мне это нужно)
Поскольку необходимо поле нескольких строк сконкатенировать в одно значение (приму за данность что это поле так же текстовое и называется name
) - то пригодится функция GROUP_CONCAT
:
UPDATE `table` SET `colum` = (
SELECT group_concat(name) FROM `table2
WHERE visible = 1
) WHERE `id` = 12
Если не указан другой separator
то значения строк будут разделены запятой. Другой разделитель можно указать синтаксисом
group_concat(name SEPARATOR ' ')
Необходимо обратить внимание, что group_concat
имеет верхний лимит размера результирующей строки: он определяется переменной group_concat_max_len
. При превышении этого размера строка будет усечена в конце.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Суть: переносил сайт с одной CMS на другую (с самописной на Modx)Спустя некоторое время, потребовалось доперенести некоторые данные