【问题标题】:How to use DISTINCT in ms access?如何在 ms 访问中使用 DISTINCT?
【发布时间】:2015-04-23 14:30:14
【问题描述】:

我有以下疑问:

SELECT DISTINCT AwardDescriptions.aID, CostCentres.cCC 
FROM  AwardDescriptions 
INNER JOIN CostCentres ON AwardDescriptions.aID = CostCentres.cNumber 
ORDER BY CostCentres.cCC;

由于某种原因,当我运行查询时,它仍然显示所有重复值。 有什么建议吗?

【问题讨论】:

  • 您看到具有相同 aID cCC 的重复行?
  • @AlexK。我知道我现在哪里可能出错了......好的问题改写:如何修改我的查询,以便没有重复的成本中心?
  • 那么,如果一个特定的 aID 有 2 个不同的 cCC 值,您想要哪一个?你会选择一个聚合(例如min()/max())并使用GROUP BY
  • @carrots 能给你一些样本数据和你想要得到的结果吗?
  • @AlexK。一个 aID 可以有 2 个不同的 cCC,同样,一个 cCC 可以有 2 个不同的 aID。我并不真正关心 aID,我只希望它呈现 cCC 的所有不同值。

标签: sql ms-access ms-access-2007 ms-access-2010 ms-access-2013


【解决方案1】:

您可以使用group by 并获取最小值或最大值:

SELECT MAX(AwardDescriptions.aID) as aID, CostCentres.cCC 
FROM  AwardDescriptions INNER JOIN
      CostCentres
      ON AwardDescriptions.aID = CostCentres.cNumber 
GROUP BY CostCentres.cCC
ORDER BY CostCentres.cCC;

【讨论】:

  • 谢谢,这行得通!我很难理解为什么使用 MAX 和 GROUP BY 可以使这项工作。我以为 MAX 会从 aID 中得到一个最高的值,但是它如何渲染所有的 aID?
  • @carrots 。 . .我不明白你的问题。此查询为每个 CostCenter.cCC 显示一个 aID 值,这似乎是您的问题所要求的。
猜你喜欢
  • 2011-08-12
  • 2014-10-22
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-23
  • 1970-01-01
相关资源
最近更新 更多