2014-11-04 13 views
0

我使用mysql和要做到以下幾點:將多行消除重複和CONCAT多列

  1. 採取不同的每一列的串聯如果有多個不同的存在是有記錄
 
    user_id pagetitle  companyname Category1       Category2    Category3 
    509  Digital Arts Digital Arts Advertising, Media & Promotions Audio Visual Equipment Audio Visual Equipment- Rentals 
    509  Digital Arts Digital Arts Advertising, Media & Promotions Audio Visual Equipment Audio Visual Equipment- Rentals 
    509  Digital Arts Digital Arts Advertising, Media & Promotions Audio Visual Equipment Audio Visual Equipment- Rentals 
    509  Digital Arts Digital Arts Advertising, Media & Promotions Audio Visual Equipment Audio Visual Equipment- Rentals 
    509  Digital Arts Digital Arts Advertising, Media & Promotions Outdoor Media   Advertising- Signs, Neon, Glow Etc 
    509  Digital Arts Digital Arts Advertising, Media & Promotions Outdoor Media   Advertising- Signs, Neon, Glow Etc 
    509  Digital Arts Digital Arts Advertising, Media & Promotions Printing & Printers  Digital Printing 
    509  Digital Arts Digital Arts Advertising, Media & Promotions Printing & Printers  Digital Printing 
    509  Digital Arts Digital Arts Advertising, Media & Promotions Printing & Printers  Digital Printing 
    509  Digital Arts Digital Arts Advertising, Media & Promotions Printing & Printers  Flexographic Printing 

    user_id pagetitle  companyname Category1      Category2                  Category3 
    509  Digital Arts Digital Arts Advertising, Media & Promotions Audio Visual Equipment, Outdoor Media, Printing & Printers, Printing & Printers Audio Visual Equipment- Rentals, Advertising- Signs, Neon, Glow Etc, Digital Printing , Flexographic Printing 

  1. 並且還將多列中的內容合併爲1以消除空列。

    地址buildingname標誌性地點sublocality市州國家的pin碼 5個Vaniga Valaagam舊巴士站塞勒姆印度泰米爾納德邦636001

至於如果我使用concat()有隔板上還包括空的,包括多個分隔符。

5, Vaniga Valaagam, , Old Bus Stand, , Salem, Tamilnadu, India - 636001 

有人可以提出一種方法來實現兩個。

+1

看起來像作業。你有沒有做任何事來解決它自己? – 2014-11-04 10:21:38

+0

@juergen d - 我不是數據庫人員,也不是我的開發人員。但我仍然嘗試通過選項做出獨特的連續組合。但按照我的水平來看,這會變得很複雜。 – rajesh 2014-11-04 10:38:57

+0

1.參見標準化。 – Strawberry 2014-11-04 10:47:39

回答

0

1部分:

SELECT user_id, 
    GROUP_CONCAT(DISTINCT pagetitle SEPARATOR ', ') as pagetitle, 
    GROUP_CONCAT(DISTINCT companyname SEPARATOR ', ') as companyname, 
    GROUP_CONCAT(DISTINCT Category1 SEPARATOR ', ') as Category1, 
    GROUP_CONCAT(DISTINCT Category2 SEPARATOR ', ') as Category2, 
    GROUP_CONCAT(DISTINCT Category3 SEPARATOR ', ') as Category3 
FROM some_table 
GROUP BY user_id 

第2部分:

的concat-ING多個字段ommiting空的

SELECT concat(
    IF(field1>'',concat(field1,', '),''), 
    IF(field2>'',concat(field2,', '),''), 
    IF(field3>'',concat(field3,', '),'') 
) as something 
FROM somewhere 

將其組合在一起:

SELECT concat(
    IF(user_id>'',concat(user_id,', '),''), 
    IF(pagetitle>'',concat(pagetitle,', '),''), 
    IF(Category1>'',concat(Category1,', '),''), 
    IF(Category2>'',concat(Category2,', '),''), 
    IF(Category3>'',concat(Category3,', '),'') 
) as something 
FROM 
(
SELECT user_id, 
    GROUP_CONCAT(DISTINCT pagetitle SEPARATOR ', ') as pagetitle, 
    GROUP_CONCAT(DISTINCT companyname SEPARATOR ', ') as companyname, 
    GROUP_CONCAT(DISTINCT Category1 SEPARATOR ', ') as Category1, 
    GROUP_CONCAT(DISTINCT Category2 SEPARATOR ', ') as Category2, 
    GROUP_CONCAT(DISTINCT Category3 SEPARATOR ', ') as Category3 
FROM some_table 
GROUP BY user_id 
) nicehomework 
+0

非常感謝上述代碼。我能夠讓事情發展。 – rajesh 2014-11-07 04:57:37