SQL找不好组合

时间:2014-04-03 17:43:28

标签: sql sql-server sql-server-2005

我有下表

item_id     dep_id          value_id
67          20              3
67          20              2
68          20              8 
68          20              8
68          20              8
97          16              3

我需要确保每个department_id中的每个项目的表都具有相同的value_id。换句话说,对于给定的department_id,我不能有一个具有不同value_id的item_id。

在上面的示例中,前两行无效,因为department_id 20中的项67显示为具有不同的value_ids(3,2)

是否有执行查询以捕获“异常”?我正在使用SQL Server 2005

提前致谢!

2 个答案:

答案 0 :(得分:4)

这将列出(item_id,dep_id)对,其中有valud_is不同。

select
  item_id,
  dep_id
from
  table
group by
  item_id,
  dep_id
having
  count(distinct value_id)>1

答案 1 :(得分:2)

DISTINCT通常更贵,这可能会使用更少的资源(并且还会显示两个不同的值):

select
  item_id,
  dep_id,
  min(value_id),
  max(value_id)
from
  table
group by
  item_id,
  dep_id
having
  min(value_id) <> max(value_id)