Mysql在虚拟一列中选择两列

时间:2019-12-18 17:09:03

标签: mysql sql

我有这个查询

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

它显示此结果:

query result

我想要得到的是这样的

enter image description here

我想用“ field_id”和“ votes”中的值创建一个虚拟列。

我该怎么做?

1 个答案:

答案 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

相关问题