mysql - 来自其他两个表的更新中 group_concat 的 MySQL 语句
问题描述
我在下面有 3 个表我正在尝试为group_concat
表 cart_session 中的“item”列编写一个语句
桌子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
,而第一个查询将这些行保持不变。
推荐阅读
- c# - 简单分配期间的垃圾收集
- ios - Swift:如果达到 url,如何关闭 Safari
- node.js - 护照:Facebook 登录默认要求 user_friends 权限
- templates - 使用 AMI 从快照启动模板,不可能终止卷
- scala - 如何从余弦相似度矩阵中获取项目 ID?
- git - 我不想自动进行 git prune 的用例是什么?
- java - 使用 BeanDefinitionRegistryPostProcessor 从 org.springframework.core.env.PropertySource 加载配置 POJO
- linux - 如何在 linux bash 提示符下拆分模式上的字符串并返回模式的最后一个实例以及之后的所有内容
- php - 使用 file_get_contents 获取属性值
- python - 数据未附加到我的输出文件中,python csv 模块 3.6