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

SQL如何查询指定表中所有行取值均一致的指定列对应值

校验List表nS列全表取值是否一致的SQL实现方案

需求说明

需要校验List表的nS列是否所有行取值都相同,若所有行该列值一致则返回该值,否则无返回结果。

示例1

如下表应当返回'S1',因为所有行的nS列取值均为'S1':

|  nS  |  nE  |
|:-----|-----:|
| 'S1' | 'A1' |
| 'S1' | 'A2' |
| 'S1' | 'A3' |
| 'S1' | 'A4' |

示例2

如下表无返回结果,因为nS列的取值存在差异:

|  nS  |  nE  |
|:-----|-----:|
| 'S1' | 'A1' |
| 'S2' | 'A2' |
| 'S1' | 'A3' |
| 'S3' | 'A4' |

原有代码问题

你编写的SELECT nS FROM List GROUP BY nS HAVING count(nS) = count(*);逻辑不成立:在nS字段没有NULL值的前提下,按nS分组后每组的count(nS)和count(*)永远相等,会返回所有出现过的nS值,完全不符合需求。

正确实现代码

方案1(最简洁,兼容大部分SQL方言)

SELECT MIN(nS) AS nS
FROM List
HAVING COUNT(DISTINCT nS) = 1;

逻辑说明:统计全表nS的去重后值数量,只有等于1时才返回结果,用MIN/MAX取唯一的nS值即可。

方案2(和原有写法逻辑更接近)

SELECT nS FROM List
GROUP BY nS
HAVING COUNT(*) = (SELECT COUNT(*) FROM List);

逻辑说明:按nS分组后,某组的行数和全表总行数相等,说明全表所有行的nS都是这个值,直接返回即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:24:04