Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MYSQL - GROUP_CONCAT I FIND_IN_SET mieszają wartości/kolejność?

czy coś takiego zadziała? po prostu mówisz porządek według wartości pól i sprawiasz, że wyglądają jak „52”, „46” itd.

SELECT 
    GROUP_CONCAT(DISTINCT options.option_name 
                 ORDER BY FIELD( options.id, 
                                 concat('"', 
                                        replace(selected, ',', '","'),
                                        '"') 
                               ) 
                 SEPARATOR ','
                ) AS selected,
    user_login.firstname, user_login.lastname,
    event.event_title
FROM options, user_login, event, votes, questions
WHERE event.id = ? AND questions.Event_id = event.id 
  AND votes.user_id = user_login.id AND votes.question_id = questions.id 
  AND FIND_IN_SET(options.id, selected)
GROUP BY user_login.id
ORDER BY user_login.class

EDYTUJ:

moim preferowanym sposobem na zrobienie tego jest utworzenie zmiennej, która ma ciąg znaków.. jest łatwiejsza do odczytania i możesz się upewnić, że w ten sposób ma prawidłową kolejność..

SET @order_field := (
    SELECT 
        group_concat(
            CONCAT('"', replace(selected, ',', '","'), '"')
        ) 
    FROM votes);

wtedy zapytanie byłoby o wiele łatwiejsze do odczytania...

SELECT 
    GROUP_CONCAT(DISTINCT options.option_name 
                 ORDER BY FIELD( options.id, @order_field) 
                 SEPARATOR ','
                ) AS selected,
    user_login.firstname, user_login.lastname,
    event.event_title
FROM options, user_login, event, votes, questions
WHERE event.id = ? AND questions.Event_id = event.id 
  AND votes.user_id = user_login.id AND votes.question_id = questions.id 
  AND FIND_IN_SET(options.id, selected)
GROUP BY user_login.id
ORDER BY user_login.class



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Łączenie się z AWS RDS przez PDO

  2. MySQL:Jak osiągnąć blokowanie transakcji na poziomie wiersza zamiast blokowania tabeli?

  3. Jak dopasować adres IP w mysql?

  4. Wykonywać wiele zapytań migracji laravel alter table w jednym?

  5. JSON_LENGTH() – Zwraca długość dokumentu JSON w MySQL