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 并获取返回所有列的特定字符串规则的所有值
将 SELECT 语句中的所有列添加到 group by 撤消我想要的分组
2018-07-10聚合函数+比较条件+''和NULL+DISTINCT+ORDER BY+LIMIT+GROUP BY