Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于列值的mysql组记录_Mysql - Fatal编程技术网

基于列值的mysql组记录

基于列值的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

这是我的表模式

在上面的测试表中,我只想在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中抛出一个错误

以下是我想要的:
这是一个简单的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”,则无需按消息类型分组。这没有帮助。我对这个问题进行了编辑,让你清楚地了解我想要什么。如果你还需要什么,告诉我。