我使用mysql,想做以下事情。
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列,消除空列。
地址 建筑名称 地标 位置 分区 城市 国家 邮编5 Vaniga Valaagam Old Bus Stand Salem Tamilnadu India 636001
仿佛我用 concat()
与分隔符上面还包括空和包括多个分隔符。
5, Vaniga Valaagam, , Old Bus Stand, , Salem, Tamilnadu, India - 636001
谁能建议一种方法来实现这两个功能。
第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