MySQL подзапрос не сохраняет порядок ПОЧЕМУ?

0

хорошие парни утром, у меня есть эта таблица с именем 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

**

как решить проблему, которую я знаю, я хотел знать, почему это происходит

**

ОБНОВИТЬ

Я знаю, как его решить, что меня интересует, потому что он работает таким образом

Теги:

1 ответ

1

Вы можете указать порядок внутри 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

Вот демо.

  • 0
    , , CONCAT() является избыточным во втором запросе. GROUP_CONCAT() принимает несколько аргументов.
  • 0
    Я знаю, как решить это, что меня интересует, потому что это работает таким образом
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню