我使用 MYSQL 有 3 个表关系;
首先作为乘客表的示例:
bib | series_id | point
202 3 200
219 3 140
202 2 200
219 2 110
10 1 90
第二个系列表示例:
series_id | series_no | season_id
1 1 2
2 2 1
3 1 1
第三个季节表示例:
season_id | year
1 2015
2 2016
如何正确GROUP_CONCAT
指向?我正在尝试这样
SELECT riders.bib, seasons.year, GROUP_CONCAT(DISTINCT riders.point ORDER BY series.series_no DESC) AS seriPoint
FROM series, riders, seasons
GROUP BY riders.bib
当我使用这样的 DISTINCT
输出时,我得到 bib: 202 is 200 和 bib: 219 is 140,110
的输出 seriPoint。但是,当我不使用 DISTINCT
获取 bib: 202 的输出 seriPoint 是 200,200,200,200 和 bib: 219 是 140,110,140,110
时。我想要的是 bib: 202 是 200,200 和 bib: 219 是 140,110 的输出 seriPoint
。
添加:请帮忙添加过滤器,对于season_id
,当不同的season_id
时它是不同的行。
最佳答案
是的,由于您使用了DISTINCT
,您得到了正确的输出。顺便说一句,您应该更改查询以使用正确的 JOINS
SELECT riders.bib,
seasons.year,
GROUP_CONCAT(DISTINCT riders.point ORDER BY series.series_no DESC) AS seriPoint
FROM riders
JOIN series ON series.series_id = riders.series_id
JOIN seasons ON series.season_id = seasons.season_id
GROUP BY riders.bib;
(或者)您可以先进行分组,然后执行联接,例如
select seasons.year, xx.bib, xx.seriPoint
FROM series
JOIN (
select series_id, bib
group_concat(point) as seriPoint
from riders
group by bib ) xx ON series.series_id = xx.series_id
JOIN seasons ON series.season_id = seasons.season_id
order by xx.seriPoint;
关于mysql - 如何正确使用不同的 group_concat - MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35006863/