我正在尝试编写SELECT语句,该语句将提取仅存在一次的数据。我有两列,ItemID和OfficeID,我需要从ItemID列中查找仅注册到一个办公室的项目。物料可以有多行,每行分配给一个办公室。因此,如果一个ItemID在多个办公室中使用,则可以有多个行。我可以将SELECT语句与COUNT一起使用,还是有更好的方法?
想不出一个起点,但是我以不同的方式使用了COUNT。
答案 0 :(得分:0)
使用HAVING
和EXISTS
可以使用以下查询,因为项目可以有多行,每行分配给一个办公室,我将其读取为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
的项目。