2016-10-16 70 views
0

我有兩個表:如何在MySQL匹配兩個不同的列已逗號分隔值

  1. CampaignTable

其具有以下屬性

id , campaign ,user_group 

例子是

1 8867116213 5,11,15,16,18,20 
2 8867116214 0,8,22 

然後,我有稱爲用戶表

另一個表與以下屬性

id emp_id user_group 

實施例是這樣的

1 274 0,5,8,9,10,11,21,20 
2 275 5,11,20 
3 279 19,21,22,25 

我不得不加入這個表,並創建具有競選明智用戶數組

例如用於ID爲1的廣告系列,它應該給我

274,275

我怎樣才能在MySQL

實現這一

感謝

+0

你應該規範你的數據庫。 –

+0

正如@IvankaTodorova所說,規範化你的數據庫。採用這種設計會使生活變得非常困難。 –

+0

你能告訴我一些想法如何正常化?我的意思是我應該做哪些列 – Vikram

回答

3

你應該definetely正常化您的數據。例如,考慮這種正常化這使得你的數據庫結構幾乎沒有變化:

INSERT INTO CampaignTable 
    (`campaign`, `user_group`) 
VALUES 
    (8867116213, 5), 
    (8867116213, 11), 
    (8867116213, 15), 
    (8867116213, 16), 
    (8867116213, 18), 
    (8867116213, 20), 
    (8867116214, 0), 
    (8867116214, 8), 
    (8867116214, 22) 
; 

INSERT INTO UserTable 
    (`emp_id`, `user_group`) 
VALUES 
    (274, 0), 
    (274, 5), 
    (274, 8), 
    (274, 9), 
    (274, 10), 
    (274, 11), 
    (274, 21), 
    (274, 20), 
    (275, 5), 
    (275, 11), 
    (275, 20), 
    (279, 19), 
    (279, 21), 
    (279, 22), 
    (279, 25) 
; 

然後,您可以用這麼簡單的查詢獲取你的數據:

SELECT c.campaign, GROUP_CONCAT(DISTINCT u.emp_id) FROM CampaignTable c 
JOIN UserTable u ON c.user_group = u.user_group 
GROUP BY c.campaign 

SQLFiddle