选择 * 在 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 )) 的列

在一个列上应用 distinct 并在另一列上按 count 排序

SQL选择JOIN中的行,列上具有最大值

SQL仅选择列上具有最大值的行[重复]

SQL仅选择列上具有最大值的行[重复]