首页 > 解决方案 > 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

标签: mysqlsqlstringcsvwhere-clause

解决方案


您可以通过以下方式获得第二个结果集find_in_set()

select t1.name, t2.value
from t1
inner join t2 on find_in_set(t2.id, t1.value_ids)

一个更好的选择是修复您的数据模型。您不应该在单个列中存储多个值(数字!)。相反,您应该有一个单独的表来表示表之间的多对多关系,每个 id 元组存储在单独的行中。

推荐阅读:在数据库列中存储分隔列表真的那么糟糕吗?


推荐阅读