2013-01-03 57 views
-1

有沒有什麼辦法,我可以得到一個字段值(逗號分隔)到一個數組或臨時表中。用逗號分隔的字段值到數組的MYSQL查詢

例如:我有值3,7,23,45

我希望讓他們到一個數組場following不使用PHP,或者到一個臨時表。

因爲我需要根據這些值做一些聯合查詢。

任何幫助表示讚賞

感謝

我的表名是:鞋 字段名以下

樣表的值都喜歡這些

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

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

現在,當我搜索對於userId 1,我想將值5,7,8,12放入數組或臨時表中。

+1

http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/ –

+0

添加你的表結構與示例輸入輸出數據 –

+0

謝謝你,但我想將它們存儲到一個數組/臨時表 不顯示在屏幕上,因爲我需要做一些更多的操作 – Jhansi

回答

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 
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