[英]MySQL concatenate data from multiple columns skipping dups
我正在尋找一種將重復的列數據分組的方法。
我有一個數據表,如:
-------------------------------------------
ID | locationId | day | open | close
-------------------------------------------
1 | 1213 | Wed | 10:00 am | 4:30 pm
-------------------------------------------
2 | 1213 | Thr | 10:00 am | 4:30 pm
-------------------------------------------
3 | 1213 | Fri | 10:00 am | 4:30 pm
-------------------------------------------
4 | 1213 | Sat | 10:00 am | 5:30 pm
-------------------------------------------
我正在使用group_concat
返回locationId 1213的信息,如下所示:
Wed: 10:00 am-04:30 pm,Thu: 10:00 am-04:30 pm,Fri: 10:00 am-04:30 pm,Sat: 10:00 am-05:30 pm
有沒有一種方法可以使用group_concat或其他函數/查詢將重復的打開和關閉時間分組,並返回類似於以下內容的數據?
Wed,Thr,Fri: 10:00 am-04:30 pm,Sat: 10:00 am-05:30 pm
甚至
Wed-Fri: 10:00 am-04:30 pm,Sat: 10:00 am-05:30 pm
以下是我正在使用的SQL代碼:
SELECT appdata.nameShort,
group_concat(distinct concat(appdatahours.`day`,": ", appdatahours.open, "-",
appdatahours.close)) as hours
FROM appdata
LEFT JOIN appdatalocations on appdatalocations.listingId = appdata.id
LEFT JOIN appdatahours on appdatahours.locationId = appdatalocations.id
GROUP BY appdata.id
試試看(使用派生表):
select locationId, group_concat(day_group) from
(
SELECT
locationID, concat(group_concat(`day`),": ", open, "-", close) as day_group
FROM tableB
GROUP BY locationID, open, close
) dayGroup;
sqlfiddle此處: http ://sqlfiddle.com/#!2/c19c5/1/0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.