0

样品表

Table1

Column A, Column B, Column C
Blah, 3, Blue
Foo, 3, Blue
Bar, 2, Blue
Joy, 1, Red
To, 2, Red
World, 2, Red

我想为每个相同的列 c 找到相同的所有值列 b。我的最终目标是创建一个触发器来跟踪这些条目并通知用户需要注意冲突。

所以结果应该像

Blah,3,Blue
Foo,3,Blue
To,2,Red
World,2,Red

就像在所有 Blues 3 中重复一样,在所有红色 2 中都重复....等等。

4

2 回答 2

0

我的最终目标是创建一个触发器来跟踪这些条目并通知用户需要注意冲突。

我不知道什么“需要注意”。是不是 {3,blue} 对应该只出现一次,它可能与BlahFoo相关联,但不能同时出现?如果是这样,UNIQUE请在该对列上声明一个约束,并省去编写触发器的麻烦。一盎司的预防胜过一磅的治疗。

触发器不是用来提供建议的;它们旨在强制执行无法声明的约束。将它们用于任何其他目的可能很诱人,但最终会流泪。

于 2013-05-06T03:46:21.987 回答
0

如果我正确解释了您的问题,您可以使用 group by 语句,例如

SELECT 
  COUNT(*)
, b
, c
FROM table1
GROUP BY b, c

这将为您提供行数,如果有重复,则计数将大于 1。然后您可以将其过滤为仅返回该计数大于 1 的行,因此最终查询可能成为(在@ypercube 的帮助下):

SELECT 
  COUNT(*) totalCount
, b
, c
FROM table1
GROUP BY b, c
HAVING COUNT(*) > 1
于 2013-05-06T00:08:20.123 回答