选择 * 在 3 列上具有 Distinct [重复]
Posted
技术标签:
【中文标题】选择 * 在 3 列上具有 Distinct [重复]【英文标题】:Select * with Distinct on 3 columns [duplicate] 【发布时间】:2015-06-07 15:53:23 【问题描述】:我的表中有我想要选择的重复项,但我不想在所有 12 列上执行选择不同的列,我只希望其中 3 列是不同的。如果我对所有列进行选择不同,那 3 列仍然可以有我不想要的重复项,因为其他一些列是不同的。
我想查看所有列,但只希望它在 3 上是不同的。
我已经尝试了该组的解决方案,并解决了这个问题的解决方案,即这个问题应该是复制但那些不起作用。无论出于何种原因,当我按它进行分组时,它只会在我将表中的所有列包含在其中时才执行查询,这不是我想要的,因为我只希望 3 列不同。当我尝试它时,“with c”就不会执行。
【问题讨论】:
SELECT DISTINCT col1, col2, col3 FROM YourTable
?
如何在不重复前 3 列的值的情况下查看其他列的差异?我认为示例结果将有助于解释您期望查询返回的内容。
【参考方案1】:
尝试或类似的东西; 选择与 col 1 不同的地方 选择与 col 2 不同的地方 选择不同于 col 2
【讨论】:
类似的东西;我记得它有效【参考方案2】:使用row_number()
:
select t.*
from (select t.*, row_number() over (partition by col1, col2, col3
order by (select null)) as seqnum
from table t
) t
where seqnum = 1;
这将为三列值的每个组合选择一个不确定的行。
【讨论】:
所以我提交了这个(我知道 where 语句在我拥有的 sql 中有效) select t.* from (select t.*, row_number() over (partition by Plant, Timestamp, FermBatchNumber order by (select null)) as seqnum FROM dbo.FermKineticsNIR WHERE t.\!"Timestamp\!" >= DATEADD(d, -30, getdate()) ) t where seqnum = 1;它不执行查询,所以我可能有问题。你能告诉我会发生什么吗? @bjbreitling 。 . .如果查询没有执行,那么 SQL Server 应该会给出一条错误消息来指示问题。 谢谢!我正在通过另一个软件向 ms sql 提交查询,所以我不得不做一些修改,但现在效果很好!如果我有更高的代表,我会给这个投票!以上是关于选择 * 在 3 列上具有 Distinct [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在不相关列上的 Postgresql 错误中选择 Distinct
在 Hive 表中重命名名称为 count( distinct( id )) 的列