SQL Select 一列中有重复值的不同行,并根据主键字段中的值为每个重复项选择一行
SQL Select distinct rows with duplicate values in one column and choose one row for each duplicate based on value in primary key field
我有一个 SQL table 在 FacilityID 上有重复的记录。 FacilityKey 是唯一的。我需要 select 在 FacilityID 上有重复的行,但我只想为每个显示一条记录,我想选择具有最新(最高)FacilityKey 的记录。谁能帮我弄清楚如何编写查询?我已经尝试了我能想到的一切,并在互联网上搜索了类似无济于事的东西。我所能找到的只是识别重复记录的示例。
试试这个:
select
FacilityKey , MAX(FacilityID) AS FacilityID
From YourTable
GROUP BY FacilityKey
HAVING COUNT(*)>1
像这样的东西应该可以工作:
select FacilityID, max(FacilityKey)
from Facilities
group by FacilityID
having count(FacilityID)>1
然后如果你想得到所有的字段,像这样:
select *
from facilities
inner join (
select FacilityID, max(FacilityKey) as maxkey
from Facilities
group by FacilityID
having count(FacilityID)>1
) t on t.FacilityID = facilities.FacilityID and t.maxkey=facilities.FacilityKey
我有一个 SQL table 在 FacilityID 上有重复的记录。 FacilityKey 是唯一的。我需要 select 在 FacilityID 上有重复的行,但我只想为每个显示一条记录,我想选择具有最新(最高)FacilityKey 的记录。谁能帮我弄清楚如何编写查询?我已经尝试了我能想到的一切,并在互联网上搜索了类似无济于事的东西。我所能找到的只是识别重复记录的示例。
试试这个:
select
FacilityKey , MAX(FacilityID) AS FacilityID
From YourTable
GROUP BY FacilityKey
HAVING COUNT(*)>1
像这样的东西应该可以工作:
select FacilityID, max(FacilityKey)
from Facilities
group by FacilityID
having count(FacilityID)>1
然后如果你想得到所有的字段,像这样:
select *
from facilities
inner join (
select FacilityID, max(FacilityKey) as maxkey
from Facilities
group by FacilityID
having count(FacilityID)>1
) t on t.FacilityID = facilities.FacilityID and t.maxkey=facilities.FacilityKey