【问题标题】:MS Access Query to get Distinct records from a tableMS Access Query 从表中获取不同的记录
【发布时间】:2015-11-04 06:51:56
【问题描述】:

我有一张如下表:

ID  Demand_ID   Supply_ID   Supply_Skill    Supply_Designation  Supply_Location
1   D10         S10         Python          engineer            Mumbai
2   D10         S16         Python          engineer            Mumbai
3   D10         S2          Python          engineer            Mumbai
4   D10         S7          Python          engineer            Mumbai
5   D12         S12         Java            Manager             Bangalore
6   D1          S1          Java            Senior engineer     Bangalore
7   D1          S11         Java            Senior engineer     Bangalore
8   D1          S3          Java            Senior engineer     Bangalore
9   D2          S10         Python          engineer            Mumbai
10  D2          S16         Python          engineer            Mumbai
11  D2          S2          Python          engineer            Mumbai
12  D2          S7          Python          engineer            Mumbai
13  D3          S1          Java            Senior engineer     Bangalore
14  D3          S11         Java            Senior engineer     Bangalore
15  D3          S3          Java            Senior engineer     Bangalore

如何获得如下的唯一记录:

ID  Demand_ID   Supply_ID   Supply_Skill    Supply_Designation  Supply_Location
1   D10         S10         Python          engineer            Mumbai
5   D12         S12         Java            Manager             Bangalore
6   D1          S1          Java            Senior engineer     Bangalore
10  D2          S16         Python          engineer            Mumbai
14  D3          S11         Java            Senior engineer     Bangalore

请告诉我获取上述唯一记录的逻辑,并且在以下条件下,从Supply_IDSupply_Location 的数据不应重复Demand_ID

就像上面的例子一样,Demand_IdD10D2 具有相同的下一列记录集。如果其中一列与D10 匹配,则不应为D2 重复该列。对于D2,它可以从相应列中选择任何记录,除了已经从D10 中选择的记录。

【问题讨论】:

  • 为什么 D10 应该在 D2 之前?似乎您需要某种基于脚本的解决方案。

标签: sql ms-access


【解决方案1】:

您所描述的并不是完全获取不同的记录(因为原始表具有不同的记录),而是获取每个 Demand_Id 的第一条记录。

SELECT *
  FROM Supplies_And_Demands
 WHERE ID IN (SELECT MIN(ID)
                FROM Supplies_And_Demands
               GROUP BY Demand_Id)

【讨论】:

  • 您好,肯,感谢您的回复。根据您的查询,Supply_ID、Supply_Skill、Supply_Designation 和 Supply_Location 将被重复。对于 D10,将从 D2 记录中获取 S10。除了 S10 之外,我还需要 D2 的其他记录。
  • 啊。我不太明白这个问题。你得到的是一个优化问题,这些问题很难用 SQL 来表达。可以做到(至少在某些数据库中)。看到这疯狂。 technology.amis.nl/2009/10/13/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多