MySQL使用逗号分隔值来链接两个表

时间:2013-12-20 12:59:09

标签: mysql csv

组合两个表有一个逻辑问题,但是一个表有逗号分隔值。

表1

user    value
-----------------
Alex    x1,x2
Max     x2,x3

表2

    valueId valueProperties
    -----------------
    x1         abc
    x2         asd
    x3         poi

我想要查询并从第二个表格中选择user valueProperties,而从第一个表格中选择value

select user, valueProperties from Table1, ....

我正在寻找类似的搜索结果:

Alex abc,asd

1 个答案:

答案 0 :(得分:3)

通常这是一个糟糕的设计。您应该正确地规范化表中的表。无论如何,要直接回答您的问题,您可以使用MySQL的FIND_IN_SET来搜索csv中的值。 GROUP_CONCAT会将行连接成csv格式。

SELECT  a.user,
        GROUP_CONCAT(b.valueProperties)
FROM    Table1 a
        INNER JOIN Table2 b
            ON FIND_IN_SET(b.valueID, a.value) > 0
GROUP   BY a.user

建议的架构设计:

的UserList

  • 用户ID
  • 用户名
  • 其他栏目......

值列表

  • VALUEID
  • ValueProperty
  • 其他栏目......

UserValue

  • 用户ID
  • VALUEID