GROUP BY 所有列?

Posted

技术标签:

【中文标题】GROUP BY 所有列?【英文标题】:GROUP BY all columns? 【发布时间】:2021-12-17 01:44:45 【问题描述】:

mysql 新手,在这里找不到正确答案。

我有这些表格:乘客和门票。我需要显示所有购买 5 张票的乘客的数据,而不仅仅是 ID

我已经做到了,但我需要乘客的所有数据。

SELECT Passenger.IdPassenger
FROM Passengers
JOIN Ticket ON Passenger.IdPassenger = Ticket.IdPassenger
GROUP BY Passenger.IdPassenger
HAVING COUNT(*) = 5;

mysql 让我显示所有乘客数据的唯一方法是执行 SELECT * 然后在 GROUP BY 子句中放入 EVERY 列,有没有办法像 group by * 一样进行分组?

【问题讨论】:

【参考方案1】:

GROUP BY派生表中的Tickets表,获取5个Ticket id。 JOIN:

select p.*
from Passengers p
join (SELECT IdPassenger
      FROM Ticket
      GROUP BY IdPassenger
      HAVING COUNT(*) = 5) t
   ON p.IdPassenger = t.IdPassenger

【讨论】:

【参考方案2】:

您可以在子查询中使用 id 来获取所有数据:

select *
  from Passengers p
 where p.IdPassenger in (select Ticket.IdPassenger
                           from Ticket
                          group by Ticket.IdPassenger
                         having count(*) = 5)

【讨论】:

我假设您在子查询中只能有门票表。 是的。我会更新它

以上是关于GROUP BY 所有列?的主要内容,如果未能解决你的问题,请参考以下文章

Linq Group by 并获取返回所有列的特定字符串规则的所有值

无需手动键入所有列即可从 group by 中获取一条记录

将 SELECT 语句中的所有列添加到 group by 撤消我想要的分组

2018-07-10聚合函数+比较条件+''和NULL+DISTINCT+ORDER BY+LIMIT+GROUP BY

应用 group_by 时保留 df 的所有变量并用日期汇总? [复制]

group by用法