2013-07-06 34 views
0

我有以下表結構獲取匹配記錄表都在mysql的

Table 1     Table 2 
----------    ------------------- 
Id value    Id ids value 
1 item1    1 1,3 Item1 
2 item2    2 2,1 Item2 
3 item3    3 1,3,5 Item3 
4 item4    4 1  Item4 
5 item5    5 2,1 Item5 

現在我想從表2的值都記錄下哪些比賽從表1中如從表1匹配的IDS ID從表2

我想造成這樣的

table1.value   table2.value 
item1     Item1 
item1     Item2 
item1     Item3 
item1     Item4 
item1     Item5 
item2     Item2 
item2     Item5 
item3     Item1 
item3     Item3 
item5     Item3 

我使用下面的查詢

SELECT table1.value, table2.value FROM table1, table2 WHERE table1.id IN (table2.ids) 

,但沒有得到出來把我上面提到的。任何幫助?

+0

可能重複:http://stackoverflow.com/questions/3120580/mysql-creating-a-join-using-a-list-of-逗號分隔值 – ethrbunny

+2

藉此機會修復表定義。將逗號分隔的id值存儲在單個列中不是一個好主意。 – Randy

回答

3

這是一個錯誤的數據結構的證據。您的數據應該使用關聯表而不是列表進行存儲。但是,您可以這樣做:

select t1.value, t2.value 
from table2 t2 join 
    table1 t1 
    on find_in_set(t1.id, t2.ids) > 0; 

措施措施的另一種方法是使用like。這種想法可以在任何數據庫中,雖然字符串連接不同:

select t1.value, t2.value 
from table2 t2 join 
    table1 t1 
    on concat(',', t2.ids, ',') like concat('%,', t1.id, ',%')