[英]Multiple group_concat
我正在為mysql項目規划數據庫,並且認為我需要解決這個問題,然后再進行下一步。
CREATE TABLE ResultsTbl (
EventID INTEGER,
MatchNumber INTEGER (9),
TeamNumber int,
IndividualName CHAR (100),
Result char (4)
);
INSERT INTO ResultsTbl VALUES (1,1,1,'individual 1','W');
INSERT INTO ResultsTbl VALUES (1,1,1,'individual 2','W');
INSERT INTO ResultsTbl VALUES (1,1,2,'individual 3','L');
INSERT INTO ResultsTbl VALUES (1,1,2,'individual 4','L');
INSERT INTO ResultsTbl VALUES (1,1,3,'individual 5','L');
INSERT INTO ResultsTbl VALUES (1,1,3,'individual 6','L');
INSERT INTO ResultsTbl VALUES (1,2,1,'individual 7','W');
INSERT INTO ResultsTbl VALUES (1,2,2,'individual 8','L');
INSERT INTO ResultsTbl VALUES (1,3,1,'individual 9','W');
INSERT INTO ResultsTbl VALUES (1,3,1,'individual 10','W');
INSERT INTO ResultsTbl VALUES (1,3,2,'individual 11','L');
INSERT INTO ResultsTbl VALUES (1,3,2,'individual 12','L');
所以我有一張桌子,上面放着比賽用的數據。 我需要最終結果為每個MatchNumber在結果='W'的情況下有一個單元格,而在結果='L'的情況下要有一個單元格,但是我需要在同一小組中將“ IndividualNames”與“&”串聯起來。 我還需要將團隊與“,”串聯。
對於上面的示例,所需的結果需要如下:
MatchNumber | Winners | Losers
1 | Individual 1 & individual 2 | individual 3 & individual 4, individual 5 & individual 6
2 | individual 7 | individual 8
3 | individual 9 & individual 10 | individual 11 & individual 12
因此,在MatchNumber 1上,獲勝者只有1支隊伍,而輸者有2支隊伍。 同一團隊中的個人以“&”連接,而不同團隊中以“,”連接。 第2場比賽每隊只有1個人,因此不需要特殊角色。 第3場比賽在獲勝者和失敗者上都有1個由2個人組成的小組,因此,它們用“&”串聯,而無需使用“,”。
我很想寫自己失敗的事情,但是我無法做到任何事情都需要做。 我在團隊中看了一個group_concat,然后在結果上看了一個group_concat,但我無法弄清楚。
我想在處理所有數據之前先解決此問題,因此,如果需要更改表結構以完成此操作,那么我願意提出建議。
感謝您提供任何幫助或建議。
您需要按比賽編號,球隊和獲勝類型划分的第一組結果
您需要按比賽編號和獲勝類型獲得第二組結果
select
MatchNumber,
group_concat( Winners ) Winners,
group_concat( Losers ) Losers
from
(
select
MatchNumber,
TeamNumber,
case Result when 'W'
then group_concat(IndividualName separator '&') end Winners,
case Result when 'L'
then group_concat(IndividualName separator '&') end Losers,
group_concat(Result separator '&') r
from
Resultstbl
group by
MatchNumber, TeamNumber
) g
group by MatchNumber
給這個bash:
select MatchNumber,
group_concat(Winners order by TeamNumber),
group_concat(Losers order by TeamNumber)
from
(
select MatchNumber,TeamNumber,
group_concat(case when Result = 'W' then IndividualName end SEPARATOR " & ") as Winners,
group_concat(case when Result = 'L' then IndividualName end SEPARATOR " & ") as Losers
from ResultsTbl
group by MatchNumber, TeamNumber
) t
group by MatchNumber
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.