14

我处理具有三个不同列的数据集pilepositioninfo

数据库中没有重复,但它可能会发生,对于信息列中的一种组合pile并且position存在一两个不同的文本。这些是我试图找到的条目。

我尝试了以下

SELECT COUNT(DISTINCT(`pile`, `position`)) FROM db;

但是收到一条错误消息

ERROR 1241 (21000): Operand should contain 1 column(s)

有没有办法在两列中找到不同的值组合?

4

3 回答 3

33

即使没有子选择,这也有效。

SELECT
  `pile`,
  `position`,
  COUNT(*) AS c
FROM
  db
GROUP BY
  `pile`,
  `position`
HAVING c > 1;

上面的命令显示了表中多次出现的pile和的所有组合。positiondb

于 2013-04-24T11:04:26.820 回答
0

获取不同重复项的计数(此处优先使用分组)

   select count(*)
     from (
   select pile, position
     from db
 group by pile, position
          ) x

查找实际的重复记录

   select db.*
     from (
   select pile, position
     from db
 group by pile, position
   having count(*) > 1
          ) x
     join db on db.pile = x.pile and db.position = x.position
于 2013-04-24T11:01:26.370 回答
0
SELECT *
FROM db x
WHERE EXISTS (
  SELECT 1 FROM db y
  WHERE y.pile = x.pile
  AND y.position =x.postion
  AND y.other_field <> x.other_field
  );

现在,other_field您可以使用一些唯一的 id 列或字段的任意组合(当然 {pole, postion} 除外)

于 2013-04-24T11:11:47.447 回答