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

求SQL查询语句:找出仅提供Limited套餐的城市

找出仅提供Limited类套餐的城市的SQL解决方案

Got it, let's break this down. Your original query was fetching records with Unlimited plans, which doesn't solve the problem—we need cities that only have Limited plans, meaning there are no Unlimited plans associated with them whatsoever. Here are a couple of reliable approaches:

方法1:使用NOT EXISTS子查询

这是最直观的方式之一,我们检查每个城市是否不存在任何Unlimited套餐记录:

SELECT DISTINCT City
FROM your_table t1
WHERE NOT EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.City = t1.City
      AND t2.MobilePlan LIKE 'Unlimited%'
)
  • NOT EXISTS会逐个验证每个城市:如果某个城市没有任何匹配Unlimited%的套餐记录,它就会被选中。
  • DISTINCT确保每个城市只返回一次(比如Seattle有两条Limited2记录,不会重复输出)。

方法2:使用GROUP BY + HAVING子句

通过分组统计每个城市的Unlimited套餐数量,筛选出数量为0的城市:

SELECT City
FROM your_table
GROUP BY City
HAVING SUM(CASE WHEN MobilePlan LIKE 'Unlimited%' THEN 1 ELSE 0 END) = 0
  • 这里用CASE语句给每个Unlimited套餐标记为1,其他为0,SUM后的值就是该城市的Unlimited套餐总数。
  • HAVING子句过滤出总数为0的城市,也就是没有任何Unlimited套餐的城市。

如果想要更严谨(确保城市至少有一个Limited套餐,避免空数据或异常情况),可以在HAVING里再加一个条件:

SELECT City
FROM your_table
GROUP BY City
HAVING SUM(CASE WHEN MobilePlan LIKE 'Unlimited%' THEN 1 ELSE 0 END) = 0
   AND SUM(CASE WHEN MobilePlan LIKE 'Limited%' THEN 1 ELSE 0 END) > 0

为什么你的原查询不行?

你的原语句Select * from table_name where MobilePlan like 'Unlimited%'是在筛选有Unlimited套餐的记录,但我们的需求是排除所有有Unlimited套餐的城市,只保留完全没有这类套餐的城市,方向刚好相反啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 15:43:16