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

如何查询所有产品的C、D列全为NULL/非NULL的店铺

店铺产品数据的SQL查询需求与解决方案

我有一张包含以下字段的表:

  • Column A: 店铺ID
  • Column B: 店铺的产品ID
  • Column C: 产品价格
  • Column D: 产品折扣

表中数据如下:

Column AColumn BColumn CColumn D
100503
100615
1007nullnull

直接用IS NULL查询Column C和Column D只能拿到第3行数据,但店铺100还有其他已设置价格和折扣的产品,现需实现两个查询需求:


需求1:查询所有产品的Column C和Column D值均为NULL的店铺

这类店铺的所有产品都未设置价格和折扣,可通过分组+条件统计实现:

SELECT `Column A` AS shop_id
FROM your_table_name
GROUP BY `Column A`
HAVING COUNT(CASE WHEN `Column C` IS NOT NULL OR `Column D` IS NOT NULL THEN 1 END) = 0;

逻辑说明

按店铺分组后,统计该店铺下存在价格或折扣不为NULL的产品数量,当数量为0时,说明该店铺所有产品的价格和折扣均为NULL。


需求2:查询所有产品的Column C和Column D值均不为NULL的店铺

这类店铺的每款产品都已设置价格和折扣,提供两种实现语句:

写法一:统计无效产品数

SELECT `Column A` AS shop_id
FROM your_table_name
GROUP BY `Column A`
HAVING COUNT(CASE WHEN `Column C` IS NULL OR `Column D` IS NULL THEN 1 END) = 0;

逻辑说明

按店铺分组后,统计该店铺下存在价格或折扣为NULL的产品数量,当数量为0时,说明该店铺所有产品的价格和折扣均不为NULL。

写法二:对比总产品数与有效产品数

SELECT `Column A` AS shop_id
FROM your_table_name
GROUP BY `Column A`
HAVING COUNT(*) = COUNT(CASE WHEN `Column C` IS NOT NULL AND `Column D` IS NOT NULL THEN 1 END);

逻辑说明

  • COUNT(*)统计该店铺的总产品数
  • COUNT(CASE...)统计该店铺下价格和折扣均不为NULL的产品数
  • 两者相等时,说明所有产品都符合条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:25:17