【发布时间】:2018-12-04 20:36:56
【问题描述】:
我正在尝试以 JSON 格式返回投票结果。我的第一个 SQL 是这样的
SELECT
fa.pollQuestion_id,
q.title,
JSON_OBJECT(
'text', qo.title,
'total', COUNT(fao.pollQuestionOption_id)
) values
FROM pollFillAnswers fa
INNER JOIN pollFills f ON fa.pollFill_id = f.pollFill_id
INNER JOIN pollQuestions q ON fa.pollQuestion_id = q.pollQuestion_id
INNER JOIN pollFillAnswerOptions fao ON fao.pollFillAnswer_id =
fa.pollFillAnswer_id
WHERE f.poll_id = 17 AND fa.type IN (3,4,5)
GROUP BY fao.pollQuestionOption_id;
此 SQL 返回类似的内容:
pollQuestion_id 标题值
163 题 1 {"text": "No", "total": 599}
163 题 1 {"text": "Si", "total": 258}
在我的第二个 SQL 中,我使用 GROUP BY pollQuestion_id 和 GROUP_CONCAT(values) 将结果与此 SQL 聚合
SELECT JSON_OBJECT(
'title', result.title,
'values', GROUP_CONCAT(values)
) answers
FROM (
SELECT
q.title,
JSON_OBJECT(
'text', qo.title,
'total', COUNT(fao.pollQuestionOption_id)
) values
FROM pollFillAnswers fa
INNER JOIN pollFills f ON fa.pollFill_id = f.pollFill_id
INNER JOIN pollQuestions q ON fa.pollQuestion_id = q.pollQuestion_id
INNER JOIN pollFillAnswerOptions fao ON fao.pollFillAnswer_id = fa.pollFillAnswer_id
WHERE f.poll_id = 17 AND fa.type IN (3,4,5)
GROUP BY fao.pollQuestionOption_id
) AS result
GROUP BY result.pollQuestion_id;
结果如下
163 {"title": "Question 1", "values": "{\"text\": \"No\", \"total\": 599},{\"text\": \"Si\", \"total\": 258}"}
group_contact() 在 JSON 中的所有字符串中添加斜杠,为什么?我尝试使用REPLACE()或JSON_UNQUOTES()删除斜线,但我无法消除这种行为。
【问题讨论】:
标签: mysql group-concat