根据MySQL中另一列中的每个相似值,选择列中包含重复条目的所有字段

时间:2013-05-05 23:59:47

标签: mysql sql duplicates

样本表

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

因为在所有蓝调中都有3个重复,所有红色2都是重复的......等等。

2 个答案:

答案 0 :(得分:0)

如果我正确解释您的问题,您可以使用分组声明,例如

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

答案 1 :(得分:0)

  

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

我不知道“需要注意”。事实上,对{3,蓝色}应该只出现一次,它可能与 Blah Foo 相关联,但不是两者都有?如果是这样,请在该对列上声明UNIQUE约束,并省去编写触发器的麻烦。一盎司的预防值得一磅治疗。

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