我有这个查询
SELECT post_id, set_type, field_id, votes
FROM birr_multi_values
WHERE post_id IN (
SELECT post_id
FROM birr_multi_values
GROUP BY post_id
HAVING 0<>SUM(votes)
)
ORDER BY post_id, set_type, field_id DESC
它显示此结果:
我想要得到的是这样的
我想用“ field_id”和“ votes”中的值创建一个虚拟列。
我该怎么做?
答案 0 :(得分:1)
您必须GROUP BY post_id, set_type
并使用GROUP_CONCAT()
:
SELECT post_id, set_type,
GROUP_CONCAT(
CONCAT('field_id:',field_id, ', votes:', votes)
ORDER BY field_id DESC
SEPARATOR '; '
) new_virtual_column
FROM birr_multi_values
WHERE post_id IN (
SELECT post_id
FROM birr_multi_values
GROUP BY post_id
HAVING 0<>SUM(votes)
)
GROUP BY post_id, set_type
ORDER BY post_id, set_type
请参见demo。