【发布时间】:2014-09-18 06:43:22
【问题描述】:
我有以下问题:我尝试选择用户所做的所有投票并将它们放在一列中。我为此使用GROUP_CONCAT,但不知何故它混合了值顺序。
这是 SQL 代码:
SELECT
GROUP_CONCAT(DISTINCT options.option_name 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)
分组依据 user_login.id 订购方式 user_login.class
投票的示例值为:
id | event_id | question_id | selected | user_id
25 14 42 52,46,41 1
26 14 43 68 1
选项是这样的:
id | option_name | question_id
40 Project A 42
41 Project B 42
46 Project C 42
52 Project D 42
67 Hello 43
68 Bye 43
问题是这样的:
id | question_name | event_id
42 Project Number 14
43 Greeting 14
事件是这样的:
id | title
14 Project Testing
给定代码的输出是:
selected | event_title
Project C, Bye, ProjectD, Project B Test
我怎样才能保持原来的顺序,以便它输出我: D项目,C项目,B项目,再见?
【问题讨论】:
-
你能提供一些实际数据吗?喜欢与您想要的输出相对应的数据吗?
-
我添加了一些真实数据
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(20 多年前),不鼓励使用它
标签: mysql group-concat find-in-set