Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MYSQL - GROUP_CONCAT VÀ FIND_IN_SET đang trộn các giá trị / thứ tự?

Có công việc nào như vầy không? về cơ bản, bạn nói thứ tự theo các giá trị trường và làm cho chúng trông giống như '52', '46', ... v.v.

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

CHỈNH SỬA:

cách ưa thích của tôi để làm điều này là tạo một biến có chuỗi .. nó dễ đọc hơn và bạn có thể đảm bảo nó thực hiện đúng thứ tự theo cách này ..

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

thì truy vấn sẽ dễ đọc hơn rất nhiều ...

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. Làm cách nào để di chuyển thư mục dữ liệu MySQL trong vùng chứa docker?

  2. Sự kiện Cronjob hoặc MySQL?

  3. Lỗi cú pháp với hàm Rand () trong MySQL trong Delphi

  4. lấy dữ liệu từ hai bảng trong mysql, tham gia sẽ không hoạt động ở đây

  5. Có cách nào để kiểm tra hiệu suất của Lập chỉ mục mysql không