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

如何在SQL中筛选多列值存在差异的行?

如何筛选SQL表中多列值存在差异的行?

假设你的表名为locations,包含LocationA、LocationB、LocationC三列,要返回这三列值不全相同的行,可以用以下几种实用方法:

方法一:直接比较列间的不等关系

通过判断任意两列是否不相等,只要满足其中一个条件就返回该行:

SELECT *
FROM locations
WHERE LocationA != LocationB 
   OR LocationA != LocationC 
   OR LocationB != LocationC;

逻辑很直观:只要有两列值不同,就说明该行存在差异,完全匹配你的需求。

方法二:利用聚合函数统计不同值数量

如果后续可能增加更多列,这种方法更易扩展,无需修改多个OR条件:

SELECT *
FROM locations
WHERE (
    SELECT COUNT(DISTINCT val) 
    FROM (VALUES (LocationA), (LocationB), (LocationC)) AS temp(vals)
) > 1;

子查询会把当前行的三个列值转换成临时表,统计其中不同值的数量。如果数量大于1,说明该行存在差异,将被筛选出来。

示例验证

针对你给出的测试数据:

LocationA, LocationB, LocationC
US, US, US ---------------> 三列值全相同,不会被返回
US, IN, US ---------------> LocationB与其他列不同,会被返回
IN, US, IN ---------------> LocationB与其他列不同,会被返回

两种方法都会返回Row2和Row3,满足你的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:05:22