Всем привет. Такая задача:
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. При превышении этого размера строка будет усечена в конце.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей