【问题标题】:GROUP BY all columns?GROUP BY 所有列?
【发布时间】: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 * 一样进行分组?

【问题讨论】:

    标签: mysql sql database group-by having


    【解决方案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)
      

      【讨论】:

      • 我假设您在子查询中只能有门票表。
      • 是的。我会更新它
      猜你喜欢
      • 2010-12-06
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多