Sql选择行并忽略Sql Server中的重复用户ID

Sql选择行并忽略Sql Server中的重复用户ID,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我想从我的数据库中选择行,当它再次重复时,我想跳过,就像“user2”一样,重复输入空值的条目 我尝试了“从属性表中选择*,其中文本不为NULL,方法不为NULL”,但我缺少user2所有条目和user4条目。一种方法是聚合: select col1, col2, max(col3), max(col4) from t group by col1, col2; 对于示例数据,只需过滤掉NULL值即可: select t.* from t where col3 is not null; 理论上

我想从我的数据库中选择行,当它再次重复时,我想跳过,就像“user2”一样,重复输入空值的条目


我尝试了“从属性表中选择*,其中文本不为NULL,方法不为NULL”,但我缺少user2所有条目和user4条目。

一种方法是聚合:

select col1, col2, max(col3), max(col4)
from t
group by col1, col2;
对于示例数据,只需过滤掉
NULL
值即可:

select t.*
from t
where col3 is not null;

理论上,
NULL
NULL
不重复。它们无法比较

删除“逻辑副本”的方法

选择*
从桌子上
其中isnull([column3],“”)isnull([column4],“”)

这篇文章没有显示您的研究或努力。而且,这些行不是重复的。LOL可能是重复的。我喜欢你对这个模棱两可的问题的解释。我不赞成
isnull()
,而是更喜欢
coalesce()
。@GordonLinoff我真正感兴趣的是你为什么喜欢coalesce而不是isnull。它们是非常不同的动物,都有一些有趣的警告。FWIW,我倾向于同意你的观点,使用coalesce比使用isnull更为常见。@SeanLange:我猜他选择了
coalesce
而不是其他,因为:
isnull
返回值总是被认为不可为null,而带有非null参数的
coalesce
则被认为是null。因此表达式
ISNULL(NULL,1)
COALESCE(NULL,1)
虽然等价的表达式具有不同的可空性值。如果在计算列中使用这些表达式、创建键约束或使标量UDF的返回值具有确定性以便可以indexed@SChowdhury如果第二个条件为null,ISNULL可以返回null。由于返回的数据类型的确定方式不同,这两个值实际上并不相等。关键字是!:)是否有一种方法可以只按前2列分组,而不对其余列使用聚合函数..原因是如果我使用max函数,我会缺少一些行。
select *
from Table
where isnull([column3],'') <> isnull([column4],'')