簡體   English   中英

mysql更新查詢以使用另一個表的id設置字段

[英]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.idsession.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM