【问题标题】:SQL join with multiple values in one column separated by comma用逗号分隔的一列中的多个值的 SQL 连接
【发布时间】:2015-05-18 13:54:53
【问题描述】:

我需要连接两个表,但我的一个表列有多个值,每个值都用逗号分隔。而其他表具有该 ID 的值。请参阅下面的示例

表 1
身份证 |价值
---------------
1 | 34,54
2 | 76
3 | 12,8
4 | 3,90,78

表 2
身份证 |价值
---------------
34 |绿色
54 |红色
76 |黑色
12 |白色
8 |蓝色
3 |橙色
. . .

我希望输出看起来像

输出表
table1.ID | table2.Value
---------------
1 |绿色,红色
2 |黑色
3 |白色、蓝色

欢迎任何帮助,在此先感谢。

【问题讨论】:

  • 我认为非常需要规范化。
  • @AbhikChakraborty 感谢您的关注,反正我正在喝一些厨师准备的汤。有什么快速解决办法吗?
  • 发布了一个答案,这应该可以完成这项工作。

标签: mysql


【解决方案1】:

直到你在这里进行标准化是一种使用find_in_setgroup_concat效率不高的方法

select 
t1.id,
group_concat(t2.value) as value 
from table1 t1 
join table2 t2 on find_in_set(t2.id,t1.value) 
group by t1.id 

【讨论】:

  • 如何在 Oracle 中执行相同的查询?
【解决方案2】:
SELECT service_type.id 
GROUP_CONCAT( usermeta.meta_value ) AS value 
FROM wpxx_service_type AS service_type 
JOIN wpxx_usermeta AS usermeta ON FIND_IN_SET( service_type.id, usermeta.meta_value ) 
WHERE usermeta.meta_key = 'work_area' 
GROUP BY service_type.id Order By service_type.service_title ASC

我在哪里加入了两个表 wpxx_service_type 和 wpxx_usermeta usermeta。这个对我有用。 :)

【讨论】:

    猜你喜欢
    • 2015-10-13
    • 2021-09-05
    • 2019-08-03
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 2018-10-28
    相关资源
    最近更新 更多