Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL - GROUP_CONCAT И FIND_IN_SET смесват стойности/ред?

нещо подобно ще свърши ли работа? основно казвате ред според стойностите на полетата и ги карате да изглеждат като '52', '46',... и т.н.

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

РЕДАКТИРАНЕ:

моят предпочитан начин да направя това е да направя променлива, която има низа.. по-лесно е да се чете и можете да се уверите, че изпълнява правилния ред по този начин..

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

тогава заявката ще бъде много по-лесна за четене...

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. как да намерите необходимите стойности на уникална променлива от две таблици

  2. 100% безопасен начин за съхранение на html в MySQL

  3. SQL SERVER 2016 – Сравняване на планове за изпълнение

  4. EXTRACT() Примери – MySQL

  5. php mySQL group concat и group by