【问题标题】:Select distinct columns sql server选择不同的列sql server
【发布时间】:2014-06-13 17:23:16
【问题描述】:

我有一个包含identity primary key idCNumCUID 和其他一些列的表。我想根据CNumCUID 选择不同的记录,换句话说,如果两条记录具有相同的CNumCUID 我想获得第一条,我尝试分组但它不起作用因为想要整行。

with a as (SELECT distinct CNum, CUID
FROM Con) 
select c.CNum from Con c inner join
a on a.CNum = c.CNum
and a.CUID= c.CUID
order by id

这种方法仍然会得到重复记录。

有人知道如何解决这个问题吗?

【问题讨论】:

  • 你是什么意思“我尝试了 group by group by 但它不会工作,因为想要整行”?您是否显示了您尝试的整个查询?

标签: sql sql-server tsql distinct distinct-values


【解决方案1】:

您在最终选择语句中缺少distinct

select distinct  c.CNum 
from Con c 
     inner join a on a.CNum = c.CNum and a.CUID= c.CUID
order by id

【讨论】:

    【解决方案2】:

    也许我弄错了,但我认为您不应该在查询中包含 from Con c

    您已经在 CTE 中包含了 Con,从而获得了不同的值。如果你在这里再次使用它,你的 CTE 就没有意义了。

    【讨论】:

      【解决方案3】:

      如果要选择具有相同特征的一组行中的第一行,可以使用ROW_NUMBER() function 和 PARTITION BY 子句。像这样的:

      SELECT * FROM (
          SELECT *, ROW_NUMBER() OVER (PARTITION BY CNum, CUID ORDER BY Id) AS ROWNUM 
          FROM Con
      ) x WHERE x.ROWNUM = 1
      

      子查询将行号添加到具有相同 CNum/CUID 值的每一行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-20
        • 1970-01-01
        • 2017-01-21
        • 2011-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多