[英]PHP: Taking the last row's id number from one mysql table and using it to update a field in the first row of another table
[英]mysql update query to set field with id's of another table
我在數據庫中有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
我想用video.id
更新channel_has_session.videos
,其中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
值列表。 然后使用此CSV列表在channel_has_session
表上執行SET
。 試試這個查詢:
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
但是,如上所述,不建議在數據庫中使用逗號分隔值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.