如何选择排他的数据?

时间:2019-05-22 14:40:58

标签: sql-server

我正在尝试编写SELECT语句,该语句将提取仅存在一次的数据。我有两列,ItemID和OfficeID,我需要从ItemID列中查找仅注册到一个办公室的项目。物料可以有多行,每行分配给一个办公室。因此,如果一个ItemID在多个办公室中使用,则可以有多个行。我可以将SELECT语句与COUNT一起使用,还是有更好的方法?

想不出一个起点,但是我以不同的方式使用了COUNT。

2 个答案:

答案 0 :(得分:0)

使用HAVINGEXISTS可以使用以下查询,因为项目可以有多行,每行分配给一个办公室,我将其读取为ItemID如果 具有多个OfficeID,则具有多个行。如果同一OfficeID可以有多行,请告诉我们。

select *
from table
where exists(select ItemID from table group by ItemID having count(*) = 1)

答案 1 :(得分:0)

您必须group by ItemID并在having子句中应用条件count(*) = 1

select ItemID
from tablename
group by ItemID
having count(*) = 1

或不存在:

select t.ItemID
from tablename t
where not exists (
  select 1 from tablename
  where ItemID = t.ItemID and OfficeID <> t.OfficeID
)

这将返回所有没有另一行具有相同ItemID但不同OfficeID的项目。