mysql - 具有连接和多个分组依据的 SQL 查询

标签 mysql sql postgresql join group-by

我有表格消息:

enter image description here

我想重新开始对话。对话是当 id_sender 和 id_recipient 以及 id_ad 在行中相同时。但例如:

第一行:id_sender = 1 id_recipient = 2 id_ad = 1

第二行 id_sender = 2 id_recipient = 1 id_ad = 1

这 2 行应该分组到一个对话中,所以我创建查询:

SELECT id_ad
     , id_sender
     , u.name
     , id_recipient
     , uu.name
     , subject from ads.messages m
  JOIN ads.advertisements 
 USING (id_ad)
  JOIN ads.users u 
    ON m.id_sender = u.id_user
  JOIN ads.users uu 
    ON m.id_recipient = uu.id_user
 WHERE m.id_recipient = 133 
    OR m.id_sender = 133
 GROUP 
    BY id_ad
     , id_sender
     , subject
     , u.name
     , m.id_recipient
     , uu.name

返回:

enter image description here

此查询是正确的,但我需要返回上图中的结果之一,查询应返回 3 行

返回哪一个并不重要——要重新运行我需要所有这一列,结果行应该是 3 而不是 4

有什么想法吗?

最佳答案

我必须稍微编辑一下你的代码,但结果还是和上面一样:

enter image description here

关于mysql - 具有连接和多个分组依据的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37905681/

相关文章:

sql - 为什么我不能修改 Postgres 中的列类型

postgresql 在 ubuntu 上为用户 postgres 转储

php - 如何制作一个 if 语句来检查一个变量是否在 mysql 数据库中

mysql - 如何在Mysql+Node JS中在另一个查询中使用一个查询的结果数组?

sql - 如何使用 Sequelize 使用条件 where 参数执行搜索

sql - 学校假期设置中的重叠间隙和岛屿

postgresql - 使用UTC : false 时,Sequelize Date 列仍返回为UTC

php - 谷歌地图、谷歌地点并将标记保存到数据库

MySQL MAX_JOIN_SIZE 错误

sql - Oracle如何为多个列获取一个列中最常见的值?