хорошие парни утром, у меня есть эта таблица с именем soccer_team,
id first_name surname player_number
1 Alexis Sanchez 7
2 Petr Cech 33
3 Hector Bellerin 24
4 Olivier Giroud 12
5 Theo Walcott 14
6 Santi Cazorla 19
если я запустил эту команду,
SELECT CONCAT(first_name,' ',surname,' #',player_number) as 'i' from soccer_team order by player_number
это дает мне
i
Alexis Sanchez #7
Olivier Giroud #12
Theo Walcott #14
Santi Cazorla #19
Hector Bellerin #24
Petr Cech #33
что правильно
однако, когда я бегу
SELECT GROUP_CONCAT(i,' ') as 'players'
FROM (SELECT CONCAT(first_name,' ',surname,' #',player_number) as 'i'
from soccer_team
order by player_number
) as a;
это дает мне
players
Alexis Sanchez #7 ;Petr Cech #33 ;Hector Bellerin #24 ;Olivier Giroud #12 ;Theo Walcott #14 ;Santi Cazorla #19
в то время как это должно быть
players
Alexis Sanchez #7; Olivier Giroud #12; Theo Walcott #14; Santi Cazorla #19; Hector Bellerin #24; Petr Cech #33
**
как решить проблему, которую я знаю, я хотел знать, почему это происходит
**
ОБНОВИТЬ
Я знаю, как его решить, что меня интересует, потому что он работает таким образом
Вы можете указать порядок внутри GROUP_CONCAT
при условии, что вы player_number
в подзапрос.
SELECT GROUP_CONCAT(i ORDER BY player_number ASC SEPARATOR ' ') as 'players'
FROM (
SELECT CONCAT(first_name,' ',surname,' #',player_number) as 'i' ,player_number
from soccer_team
) as a;
Вот демо.
Фактически, вы можете упростить, удалив подзапрос, который все равно даст вам тот же результат
SELECT GROUP_CONCAT(CONCAT(first_name,' ',surname,' #',player_number)
ORDER BY player_number ASC SEPARATOR ' ') as 'players'
FROM soccerteam
Вот демо.
CONCAT()
является избыточным во втором запросе. GROUP_CONCAT()
принимает несколько аргументов.