mysql - mysql加入在哪里
问题描述
表格1:
id name value_ids
1 extras 5,6
2 brand 7
表 2:
id value
5 extra1
6 extra2
7 brand1
我的问题是,如何查询表以获得这样的东西:
1.
name value
extras extra1,extra2
brand brand1
或者
2.
name value
extras extra1
extras extra2
brand brand1
解决方案
您可以通过以下方式获得第二个结果集find_in_set()
:
select t1.name, t2.value
from t1
inner join t2 on find_in_set(t2.id, t1.value_ids)
一个更好的选择是修复您的数据模型。您不应该在单个列中存储多个值(数字!)。相反,您应该有一个单独的表来表示表之间的多对多关系,每个 id 元组存储在单独的行中。
推荐阅读:在数据库列中存储分隔列表真的那么糟糕吗?
推荐阅读
- machine-learning - 如何在 PyTorch 中实现学习率的随机对数空间搜索?
- javascript - 有什么方法可以在不重写相同代码的情况下切换类
- firebase - ESLint 找不到要扩展的配置“google”。请检查配置名称是否正确
- firebase - 反应原生推送通知从 API 获取数据
- reactjs - 为什么 Next.js 不接受传递的函数作为函数?
- python - 在 x 轴上使用日期时间数据时,Matplotlib 折线图
- snowflake-cloud-data-platform - Snowflake-Internal Stage 数据加载错误:如何加载“\”字符
- shell - 如何从 shell 终端历史记录中删除未知命令(zsh)
- python - 从python中的编码像素收缩边界框
- java - 无法执行 Single.create 中的任何内容 - rxjava