这是我的表架构
在上面的测试表格中,我希望仅在 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中抛出一个错误。
答案 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,否则其他数据将远离输出表。