簡體   English   中英

來自其他兩個表的更新中 group_concat 的 MySQL 語句

[英]MySQL statement for group_concat in Update from two other tables

我在下面有 3 個表我正在嘗試為表 cart_session 中的“item”列編寫group_concat語句

餐桌products

id      name
------------------------
123  |  car
456  |  boat
789  |  house

--------------------------------

cart_items

pid session
----------------------
123  |  ABCD    
456  |  ABCD
789  |  EFGH

----------------------------------

cart_session

id   item
----------------------------
ABCD  |  car,boat
EFGH  |  house

您可以按如下方式使用更新/加入語法:

update cart_session cs
inner join (
    select ci.session, group_concat(p.name) item
    from products p
    inner join cart_items ci on ci.pid = p.pid
    group by ci.session
) x on x.session = cs.session
set cs.item = x.item

另一個選項使用相關子查詢:

update cart_session cs
set cs.item = (
    select group_concat(p.name)
    from products p
    inner join cart_items ci on ci.pid = p.pid
    where ci.session = cs.session
)

這略有不同:此查詢會將null值分配給cart_session中在其他表中沒有匹配的行,而第一個查詢將這些行保持不變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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