【问题标题】:SQL query with joins and multiple group by带有连接和多个分组的 SQL 查询
【发布时间】:2016-10-20 17:09:41
【问题描述】:

我有表格消息:

我想重新开始对话。对话是当 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

返回:

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

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

有什么想法吗?

【问题讨论】:

  • 返回哪个并不重要 [原文如此]。这应该很重要!
  • 为什么重要?同一事物的两个组合本质上是同一事物
  • 返回两组结果之一的查询?这太糟糕了。
  • @sagi 因为电脑不擅长处理“我不在乎,挑一个你最喜欢的”。

标签: mysql sql postgresql join group-by


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2021-06-10
    • 2016-04-30
    • 2015-01-05
    • 2021-12-28
    相关资源
    最近更新 更多