14

pilepositionおよびの 3 つの異なる列を持つデータセットで作業していますinfo

データベースに重複はありませんが、 と の 1 つの組み合わせに対してpilepositioninfo 列に 1 つまたは 2 つの異なるテキストが存在する可能性があります。そして、それらは私が見つけようとしたエントリです。

私は次のことを試しました

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

しかし、エラーメッセージを受け取りました

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

2 つの列で異なる値の組み合わせを見つける方法はありますか?

4

3 に答える 3

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, position} を除く)

于 2013-04-24T11:11:47.447 に答える
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 に答える