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

如何过滤SQL表中两列文本完全相同的行,保留差异行?

解决SQL中保留两列值不同行的高效方法

首先明确:DISTINCT之所以没用,是因为它用来移除整行完全重复的记录,而你要的是基于Column1和Column2的值是否不同来过滤,和其他列是否重复无关,所以这个命令不适用。

最直接高效的方法就是用WHERE子句直接过滤,语法简单且性能最优(数据库可直接利用列上的索引快速筛选):

基础版(适用于无NULL值的情况)

如果你的Column1和Column2都不会出现NULL值,直接用不等判断即可:

SELECT *
FROM your_table
WHERE Column1 <> Column2;

兼容NULL值的版本

SQL中NULL和任何值(包括另一个NULL)比较都会返回UNKNOWN,所以需要额外处理场景:

  • 若认为一列是NULL、另一列非NULL属于“值不同”要保留,而两列都是NULL属于“值相同”要过滤,用这个条件:
SELECT *
FROM your_table
WHERE NOT (Column1 = Column2 OR (Column1 IS NULL AND Column2 IS NULL));
  • 若认为**只要两列不相等(含其中一个是NULL)**都要保留,甚至两列都是NULL也保留,用这个:
SELECT *
FROM your_table
WHERE Column1 <> Column2
   OR Column1 IS NULL
   OR Column2 IS NULL;

这个方法逻辑清晰,执行效率高——数据库可直接对Column1和Column2做条件筛选,不需要额外子查询或聚合操作,完全适配基础SQL知识储备。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:16:07