基于列值的mysql组记录

时间:2016-02-13 05:52:07

标签: mysql

这是我的表架构

Table Schema for Test Table

在上面的测试表格中,我希望仅在 message_type =“push_message”时,通过 user_by message_type 对记录进行分组。

我试图在没有任何子查询的情况下实现它,请提出建议。

我试过这个

SELECT * FROM `test` group by (CASE WHEN message_type = 'push_message' THEN user_by ELSE id END);

但是在mysql中抛出一个错误。

这就是我想要的: enter image description here

2 个答案:

答案 0 :(得分:1)

嗨感谢您的回复。经过一番研究,我做对了。

SELECT id,user_id, user_by,message_type FROM test group by 
if(message_type = 'push_message',concat(user_by,message_type),id);

答案 1 :(得分:0)

以下是GROUP_CONCAT的简单示例,运行此/执行此操作后,您可以获得所需的输出。这个例子是一个分隔符','同样,你可以快速了解事情。

GROUP_CONCAT函数返回一个字符串结果,其中包含来自组的连接非NULL值。如果没有非NULL值,则返回NULL

SELECT id, user_id,
    GROUP_CONCAT(DISTINCT user_by ORDER BY user_by DESC SEPARATOR ', ')  as user_by
    FROM test 
WHERE message_type = 'push_message'
GROUP BY user_by;

这可能会对你有所帮助,如果没有,那么请让我知道并小心翼翼地了解实际发生的事情!

如果你需要保留其他字段,那么请为所有这些做GROUP_CONCAT,否则其他数据将远离输出表。