You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL查询购5张票的乘客全量信息 能否用GROUP BY *替代逐列分组

MySQL查询购买指定票数乘客全字段的实现方案

首先明确:MySQL不存在GROUP BY *这类按全部字段自动分组的语法,你可以用以下两种更高效的方案实现需求:


方案1:子查询先筛符合条件的乘客ID,再关联取全字段(优先推荐)

这种方案完全避开了乘客表全字段分组的要求,性能更好,兼容性也更高,代码示例如下:

SELECT p.*
FROM Passengers p
INNER JOIN (
    -- 先从票务表筛选出买了5张票的乘客ID
    SELECT IdPassenger
    FROM Tickets
    GROUP BY IdPassenger
    HAVING COUNT(*) = 5
) qualified_passenger ON p.IdPassenger = qualified_passenger.IdPassenger;

方案2:利用主键分组的特性简化写法(仅适用IdPassenger是Passengers表主键的场景)

如果你的Passengers表中IdPassenger是主键/唯一非空约束字段,那么在MySQL 5.7及以上版本默认的ONLY_FULL_GROUP_BY规则下,直接按主键分组后SELECT乘客表全字段是被允许的,不需要列出所有乘客表字段,代码示例如下:

SELECT p.*
FROM Passengers p
JOIN Tickets t ON p.IdPassenger = t.IdPassenger
GROUP BY p.IdPassenger
HAVING COUNT(*) = 5;

内容的提问来源于stack exchange,提问作者NoName77

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:45:04