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

如何使用SQL提取拥有多条预订记录的唯一ID列表?

提取拥有多条预订记录的唯一ID的SQL解法

你的原SQL没法得到正确结果,核心问题是没加GROUP BY分组——HAVING子句得配合分组操作才能针对每个ID单独统计记录数,直接用的话COUNT(ID)算的是整张表的总条数,肯定不对。

下面给两种可行的解决方法:

方法一:GROUP BY + HAVING(最常用)

按ID分组后,筛选出分组内记录数大于1的ID即可,这是最直接的写法:

SELECT ID
FROM bookings
GROUP BY ID
HAVING COUNT(*) > 1;

这里用COUNT(*)或者COUNT(BOOKING_NUM)都可以,因为每条预订的BOOKING_NUM都是有效的非空值,都能统计出每个ID的预订数量。

方法二:子查询配合IN/EXISTS

如果后续需要扩展查询逻辑(比如关联其他表),可以用子查询先定位出符合条件的ID,再进行筛选:

用IN的写法

SELECT DISTINCT ID
FROM bookings
WHERE ID IN (
    SELECT ID
    FROM bookings
    GROUP BY ID
    HAVING COUNT(*) > 1
);

用EXISTS的写法

SELECT DISTINCT b1.ID
FROM bookings b1
WHERE EXISTS (
    SELECT 1
    FROM bookings b2
    WHERE b1.ID = b2.ID
    AND b1.BOOKING_NUM != b2.BOOKING_NUM
);

这种方式是通过检查当前ID是否存在其他不同的预订记录,来判断是否属于多条预订的情况。

内容的提问来源于stack exchange,提问作者learning to code

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:54:58