合并多行,消除重复,合并多列。

问题描述 投票:0回答:1

我使用mysql,想做以下事情。

  1. 取每一列的不同点,如果一条记录存在多个不同点,则进行连接。
     user_id pagetitle companyname Category1 Category2 Category3 509 数字艺术数字艺术广告,媒体& 促销影音设备影音设备-租赁 509 数字艺术数字艺术广告,媒体& 促销影音设备影音设备-租赁 509 数字艺术数字艺术广告,媒体& 推廣視聽設備 視聽設備-租賃 509 數碼藝術廣告, 媒體& 推廣視聽設備 視聽設備-租賃 509 數碼藝術廣告, 媒體& 推廣戶外媒體廣告-招牌, 霓虹燈, 螢光燈等 509 數碼藝術廣告, 媒體& 促销户外媒体广告-招牌、霓虹灯、荧光等 509 数码艺术数字艺术广告、媒体及amp; 促销印刷及amp; 印刷商数码印刷 509 数码艺术数字艺术广告、媒体及amp; 促销印刷及amp; 印刷商数码印刷 509 数码艺术数字艺术广告、媒体及amp; 印刷商数码印刷 509 数码艺术数字艺术广告、媒体及amp; 促销印刷及amp; 印刷商数码印刷 509 数码艺术数字艺术广告、媒体及amp; 促销活动 印刷 & 印刷厂 柔版印刷 user_id pagetitle companyname Category1 Category2 Category3 509 数码艺术 数码艺术 广告, 媒体 & 促销活动 视听设备, 户外媒体, 印刷 & 印刷厂 印刷 & 印刷厂 视听设备-租赁, 广告-招牌, 霓虹灯, 荧光等, 数码印刷, 柔版印刷。

  1. 并将多列内容合并为1列,消除空列。

    地址 建筑名称 地标 位置 分区 城市 国家 邮编5 Vaniga Valaagam Old Bus Stand Salem Tamilnadu India 636001

仿佛我用 concat() 与分隔符上面还包括空和包括多个分隔符。

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

谁能建议一种方法来实现这两个功能。

mysql concatenation distinct concat group-concat
1个回答
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

第二部分:

连接多个字段 剔除空字段

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
© www.soinside.com 2019 - 2024. All rights reserved.