かなり頻繁に、テーブル内の異なるレコードの数を数える必要があります。しかし、MySQLでもないテーブル内の異なるレコード(行)の数
select count(distinct *) from t;
も
select count(distinct t.*) from t;
作品。
select count(*) as countdistinctrows
from (
select distinct * from t
) x;
これで回避できますが、これは醜いです。別個の行の数を求める方法はありませんか?その後、個別のは、テーブル内の行数に適用されていて、これを使用しない場合はこれ
select count(*) from t;
「Distinct *」は矛盾です – Strawberry
もちろん、リレーショナルテーブルに重複する行があるのはなぜですか?主キーはありませんか? "醜い回避策"はあなたのカウントを得るための最良の方法です。 – dnoeth
@dnoeth:確かに、重複した行がないようにしたい。しかし、私のシナリオでは単純な帽子ではありません。私はデータからテーブルを作成します。 col1は、カテゴリを示す文字列であると考えられる。しかし、ソースデータでは、「カテゴリ1」または「カテゴリ1」とすることができます。私は混乱をきれいにするためにregexp_replaceでmysqlを使用します。その後、私はまだ別の行だけを持っているかどうかを知りたいです。 – diffset