基于列值的mysql组记录
这是我的表模式 在上面的测试表中,我只想在message\u type=“push\u message”时,按user\u by和message\u type对我的记录进行分组 我正在努力实现它没有任何子查询,请建议 我试过这个基于列值的mysql组记录,mysql,Mysql,这是我的表模式 在上面的测试表中,我只想在message\u type=“push\u message”时,按user\u by和message\u type对我的记录进行分组 我正在努力实现它没有任何子查询,请建议 我试过这个 SELECT * FROM `test` group by (CASE WHEN message_type = 'push_message' THEN user_by ELSE id END); 但是在mysql中抛出一个错误 以下是我想要的: 这是一个简单的GRO
SELECT * FROM `test` group by (CASE WHEN message_type = 'push_message' THEN user_by ELSE id END);
但是在mysql中抛出一个错误
以下是我想要的:
这是一个简单的GROUP_CONCAT示例,您可以在运行此/执行此操作后获得所需的输出。该示例还带有分隔符“”,因此您可以快速理解这些内容 GROUP_CONCAT函数返回一个字符串结果,其中包含来自组的串联非空值。如果没有非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;
这可能会帮助你,如果没有,那么请让我知道,并使小提琴了解到底发生了什么
如果您需要保留其他字段,请对所有这些字段进行分组处理,否则其他数据将从输出表中删除。您好,谢谢您的回答。经过进一步研究,我得到了正确答案
SELECT id,user_id, user_by,message_type FROM test group by
if(message_type = 'push_message',concat(user_by,message_type),id);
如果按用户和消息类型分组,则某些匹配字段将消失。所以,你真的需要这样做,失去这些领域或不。请做一个,这样我们可以帮助你正确。你有什么尝试?您知道如何进行查询,但它不起作用吗?正如@FrayneKonok所建议的,您应该提供一个示例。期望的结果是什么样的?(为什么我们还要问这个问题?)如果您想发送消息,\u type=“push\u message”,则无需按消息类型分组。这没有帮助。我对这个问题进行了编辑,让你清楚地了解我想要什么。如果你还需要什么,告诉我。