#mysql #sql
#mysql #sql
Вопрос:
У меня есть SQL, ПОДОБНЫЙ:
SELECT S.*,
(SELECT I.NAME FROM institution I, inst_map IM
WHERE IM.STUDENT = S.ID AND IM.INSTITUTION = I.ID) as INSTITUTIONS
FROM student S
В этом случае мой подзапрос может вернуть несколько записей (я получу сообщение об ошибке: Subquery returns more than 1 row
).
Как отобразить эти несколько значений из моего подзапроса в одном поле (в моем случае INSTITUTIONS
), разделенных запятыми?
Все идеи приветствуются.
Ответ №1:
Попробуйте этот запрос —
SELECT s.*, GROUP_CONCAT(t.NAME) INSTITUTIONS FROM student s
LEFT JOIN (SELECT * FROM institution i
JOIN inst_map im
ON im.INSTITUTION = i.ID
) t
ON s.ID = t.STUDENT
GROUP BY s.ID
Функция GROUP_CONCAT поможет вам получить значения, разделенные запятыми.
Ответ №2:
DECLARE @List VARCHAR(5000)
SELECT @List = COALESCE(@List ', ' Display, Display)
FROM TestTable
Order By Display
запрос взят из следующей ссылки, и статья отлично объясняет запрос, я надеюсь, что это сработает
http://www.mitchelsellers.com/blogs/articletype/articleview/articleid/289/creating-comma-separated-list-in-sql.aspx
Я думаю, это для SQL Server