Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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
C# 如何在不丢失数据的情况下对以下MySql表进行正确分组?_C#_Mysql_Group By - Fatal编程技术网

C# 如何在不丢失数据的情况下对以下MySql表进行正确分组?

C# 如何在不丢失数据的情况下对以下MySql表进行正确分组?,c#,mysql,group-by,C#,Mysql,Group By,我想按RecordId对下表进行分组,但我不想丢失任何数据。目前,我正在通过电子邮件进行分组,保留所有数据 Id | RecordId | Email | Message | ActionId | ---------------------------------------------------------------------- 1 | 2 | john@example.com | Record inserte

我想按RecordId对下表进行分组,但我不想丢失任何数据。目前,我正在通过电子邮件进行分组,保留所有数据

Id | RecordId | Email | Message | ActionId | ---------------------------------------------------------------------- 1 | 2 | john@example.com | Record inserted | 1 | 1 | 2 | jane@example.com | Record Updated | 2 | 1 | 2 | joe@example.com | Record Deleted | 3 | 执行此查询会产生一条记录,我知道原因,但我丢失了其他记录中的数据,例如电子邮件、消息和ActionId:

SELECT * FROM Messages
  GROUP BY RecordId
导致

Id | RecordId | Email | Message | ActionId | ---------------------------------------------------------------------- 1 | 2 | john@example.com | Record inserted | 1 | Id |记录Id |电子邮件|消息|操作Id| ---------------------------------------------------------------------- 1 | 2 | john@example.com|插入记录| 1| 我是否可以通过RecordId对所有数据进行分组并保留所有数据。我正试图根据
RecordId
创建一个记录,同时保留所有数据,以便我可以向
email
列中的所有人发送电子邮件,但要使用他们各自的
消息(插入记录、删除记录、更新记录)
是否
GROUP_CONCAT()
帮助

SELECT RecordId, GROUP_CONCAT(CONCAT_WS(",", Email, Message, ActionId) SEPARATOR ";")
FROM Messages GROUP BY RecordId

注意:有一个
GROUP_CONCAT()
结果长度的限制。因此,如果您预见到要对大量记录进行分组,那么这就不是您的解决方案。

下面的查询将在每个记录ID中只返回一条记录,其中包含所有信息。(这个想法有点难看)


您预期的结果是什么?@sgedes-结果有点像初始表,但我只想基于
RecordId
发送
1封电子邮件,而不是基于
email
发送
3封电子邮件,但我想知道解析
GROUP\u CONCAT
字段的数据有多困难。我有一种感觉,我会超越极限,这应该不难。您可以将
explode()
分解为数组,或者应用好的正则表达式。如果您希望结果很长,那么我不确定是否有方法将纯mySQL分组为一行。使用PHP我想很抱歉,对c不太熟悉,没办法(我收到错误
1您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在“XML PATH(“”)),[Message]=(选择[Message]附近使用的正确语法。)+';''在第6行SQL9.sql 11
对不起,我写的答案是TSQL,MySQL可能不支持。我应该在发布之前检查一下。
SELECT RecordId, GROUP_CONCAT(CONCAT_WS(",", Email, Message, ActionId) SEPARATOR ";")
FROM Messages GROUP BY RecordId
SELECT  RecordId,

        EMAIL = (   SELECT EMAIL + ';'
                    FROM Messages AS M
                    WHERE Messages.RecordId = M.RecordId
                    FOR XML PATH('')),

        [Message] =(SELECT [Message] + ';'
                    FROM Messages AS M
                    WHERE Messages.RecordId = M.RecordId
                    FOR XML PATH('')),

        ActionId =(SELECT ActionId + ';'
                    FROM Messages AS M
                    WHERE Messages.RecordId = M.RecordId
                    FOR XML PATH(''))

FROM Messages
GROUP BY RecordId