【发布时间】:2017-01-26 08:44:54
【问题描述】:
我有 2 张桌子:
tab1(值与 tab2 有逗号分隔的 id):
id1 val1
-----------
1 1
2 1,2
3 1,3
标签2:
id2 val2
-----------
1 a
2 b
3 c
我想列出 Tab1 中的值并将逗号分隔的 val1 替换为 val2
我做了这样的事情:
SELECT *, (SELECT GROUP_CONCAT(val2) FROM tab2 WHERE id2 IN val1 ) from tab1
但它会在 tab1 的 'val1 ) 附近生成语法错误
当我删除 Where 子句时,它可以完美运行:
SELECT *, (SELECT GROUP_CONCAT(val2) FROM tab2) from tab1
它会产生:
id1 val1 (SELECT GROUP_CONCAT(val2) FROM tab2 )
1 1,2 a,b,c
2 1,3 a,b,c
但我想在第三行有与 Val1 数字相对应的字母(只有 a、b 和 a、c)。关键是将 Tab1.val1: 1,2... 中的数字替换为 tab2.val2 中的字母。它应该产生:
id1 val1 (SELECT GROUP_CONCAT(val2) FROM tab2 WHERE id2 IN val1)
1 1,2 a,b
2 1,3 a,c
当我添加 where 子句时发生了一些事情,但我找不到我的错误。
也许有其他想法可以用其他表中的字母值替换这个逗号分隔的数字?
【问题讨论】:
-
好的,那你要生产什么?
-
我希望第一行只有 a,b,第二行只有 a,c
-
val1 中最多有 2 个值?它们能有多大?
-
没有。第三列应该对应于第二列,但将 1,2 替换为 tab2 中的字母。如果 Val1= 1,1,2,2,3,3,3,3 那么在第三列应该出现:a,a,b,b,c,c,c,c
标签: mysql comma group-concat