У меня есть 3 таблицы в базе данных
1) видео.
id name 1 one 2 two 3 three 
2) session_has_video.
 session_id video_id 1 1 1 3 
3) channel_has_session.
 channel_id session_id videos 1 1 
  Я хочу обновить channel_has_session.videos со всеми video.id где video.id находится в session.session_id .  Это означает, что он должен быть 1,3 
Итак, обновленная таблица должна выглядеть так:
channel_has_session.
 channel_id session_id videos 1 1 1,3 
Я попробовал этот запрос, но явно не работал.
 update channel_has_session set videos = ( SELECT video_id FROM session_has_video where session_id=1 ) where session_id=1 and channel_id=1 
Есть ли простой способ сделать это в MySQL?
  Вы можете присоединиться к таблице channel_has_session во временную таблицу, содержащую каждый session_id вместе с разделенным запятыми video_id значений video_id .  Затем выполните SET в таблице channel_has_session используя этот список CSV.  Попробуйте этот запрос: 
 UPDATE channel_has_session AS ch INNER JOIN ( SELECT session_id, GROUP_CONCAT(video_id) AS videos FROM session_has_video GROUP BY session_id ) AS t on ch.session_id = t.session_id SET ch.videos = t.videos WHERE ch.channel_id = 1 AND ch.session_id = 1 
  Одним из способов достижения этой цели можно воспользоваться group_concat() : 
 UPDATE channel_has_session SET videos = ( SELECT GROUP_CONCAT(DISTINCT video_id SEPARATOR ',') FROM session_has_video WHERE session_id = 1 ) WHERE session_id = 1 AND channel_id = 1 
Но, как сказано, использование разделенных запятыми значений в вашей базе данных не рекомендуется.