MYSQL查询用逗号分隔的字段值转换为数组

时间:2013-01-03 10:06:37

标签: mysql select

有什么办法,我可以将字段值(逗号分隔)放入数组或临时表中。

例如:我的字段following的值为3,7,23,45

我想让他们在不使用PHP的情况下进入数组,或者进入临时表。

因为我需要根据这些值进行一些联合查询。

感谢任何帮助

感谢

我的表名是:鞋子 字段名称如下

样本表值就像这些

   +----------+-----------+

   userId         following
   +----------+-----------+
    1            5,7,8,12
    2            5,2,1,67 

现在,当我搜索userId 1时,我希望将值5,7,8,12放入数组或临时表中。

2 个答案:

答案 0 :(得分:0)

虽然不是特别快,但可以。最好的解决方案是重新设计数据库,将逗号分隔列表移动到另一个表中,每个逗号分隔元素都有一行。

但是,如果你想要一个SQL方法来做,那么类似下面的内容将会这样做(这依赖于一个名为整数的表,其中一个列名为i,其中10行的值为0到9)。

SELECT DISTINCT shoes.userId , substring_index(substring_index(shoes.FollowingIdString, ',', anInt), ',', -1) AS SplitField
FROM shoes,
(SELECT a.i+b.i*10+c.i*100 AS anInt
FROM integers a, integers b, integers c) Sub1
HAVING SplitField IS NOT NULL

答案 1 :(得分:0)

假设你有一个表PersonList,它有多列,这是你要加入的表,以获取关注者列表的名称。例如

代码PersonTable

ID   Name
1    AAA
2    BBB

有一个名为FIND_IN_SET的mysql函数,例如

SELECT a.userID, GROUP_CONCAT(b.Name)
FROM   Follower a
       INNER JOIN Person b
        ON FIND_IN_SET(b.id, a.following) > 0
GROUP BY a.userID