这里是我的表架构MySQL的组记录
在上面的测试表我的user_by和message_type只有当message_type =“希望将我的记录push_message“。
我想实现它没有任何子查询,建议请。
我想这
SELECT * FROM `test` group by (CASE WHEN message_type = 'push_message' THEN user_by ELSE id END);
但在mysql中抛出一个错误。
这里是我的表架构MySQL的组记录
在上面的测试表我的user_by和message_type只有当message_type =“希望将我的记录push_message“。
我想实现它没有任何子查询,建议请。
我想这
SELECT * FROM `test` group by (CASE WHEN message_type = 'push_message' THEN user_by ELSE id END);
但在mysql中抛出一个错误。
嗨,谢谢你的回答。经过一些更多的研究,我得到了正确的答案。
SELECT id,user_id, user_by,message_type FROM test group by
if(message_type = 'push_message',concat(user_by,message_type),id);
这里是GROUP_CONCAT的简单的例子,你可能会得到你想要的输出后,运行该/执行此。这个例子还有一个分隔符',',所以你可以快速理解这些事情。
GROUP_CONCAT函数返回一个字符串结果,其中包含组合的非空值。如果没有非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;
这可能会帮助你,如果没有,那么请让我知道,做一个小提琴了解什么实际发生,它返回NULL!
如果您需要保留其他字段,请为所有这些做GROUP_CONCAT,否则其他数据将从输出表中删除。
这没有帮助。我编辑了这个问题,让你清楚我想要的东西。告诉我你是否想要其他东西。 –
你可以请[[sqlfiddle]](http://sqlfiddle.com/) –
如果你通过你的user_by和message_type进行分组,那么你的一些匹配字段将会消失。所以你真的需要这样做,否则失去这些领域。 –
请制作[sqlfiddle](http://sqlfiddle.com/),以便我们能够帮助您。 –
你有什么尝试?你知道如何进行查询,但它不起作用吗?正如@FrayneKonok建议的,你应该提供一个例子。 – Cynical