ホームページ >データベース >mysql チュートリアル >mysql での重複排除の 2 つの方法の詳細な例
この記事では、主に mysql の 2 つの重複排除方法とサンプルコードの関連情報を紹介します。必要な方は、
mysql を参照してください。
方法 1:
を使用する場合、特定のフィールドのレコードの重複をクエリする必要がある場合があります。ただし、mysqlには、冗長な重複レコードをフィルタリングして1つだけを保持するための個別のキーワードが用意されていますが、多くの場合、重複しないレコードのすべての値を返すために使用されるのではなく、一意のレコードの数を返すためにのみ使用されます。その理由は、distinct はターゲット フィールドのみを返すことができ、otherfields
を返すことはできないためです。まず例を見てみましょう:
table id name 1 a 2 b 3 c 4 c 5 b
ライブラリの構造はおおよそ次のとおりです。これは単なる単純な例です。実際の状況はさらに複雑になります。
たとえば、1 つのステートメントを使用して重複しない名前を持つすべてのデータをクエリしたい場合は、distinct を使用して冗長な重複レコードを削除する必要があります。
select distinct name from table
の結果は、
name a b c
効果は得られたようですが、取得したいのはid値でしょうか?クエリ ステートメントを変更します:
select distinct name, id from table
結果は次のようになります:
id name 1 a 2 b 3 c 4 c 5 b
distinct が機能しないのはなぜですか?これは機能しますが、同時に 2 つのフィールドに影響します。つまり、削除するには ID と名前が同じである必要があります。 。 。 。 。 。 。
もう一度クエリ ステートメントを変更しましょう:
select id, distinct name from table
残念ながら、
エラー メッセージ以外は何も取得できません。distinct は先頭に置く必要があります。 where条件にdistinctを入れるのはそんなに難しいですか?エラーを報告できます。 。 。 。 。 。 。
最後の有用なステートメントは次のとおりです:
select *, count(distinct name) from table group by name
結果:
id name count(distinct name) 1 a 1 2 b 1 3 c 1
最後の項目は冗長です。そのままにしておいてください。目的は達成されています。 。 。 。 。
そうそう、ところで、group by は order by と limit の前に置く必要があります。そうしないと、エラーが報告されます。 。 。 。 。 。 。 。 ! OK
概要ステートメント:
group by
SELECT * FROM( select * from customer where user=( SELECT source_user from customer WHERE user='admin') UNION ALL select * from customer where user=( select source_user from customer where user=( SELECT source_user from customer WHERE user='admin')) union ALL select * from customer where user=( select source_user from customer where user=( select source_user from customer where user=( SELECT source_user from customer WHERE user='admin'))) UNION ALL select * from customer where source_user=(/*我的上线的上线的user*/ select user from customer where user=( select source_user from customer where user=( SELECT source_user from customer WHERE user='admin'))) union all select * from customer where source_user=(/*我的上线的上线的上线user*/ select user from customer where user=( select source_user from customer where user=( select source_user from customer where user=( SELECT source_user from customer WHERE user='admin'))))) as alias group by user;を使用する
エイリアスを追加する場合は注意してください。追加しない場合は、where ステートメントの外側でラップすることに注意してください。その後、group by を使用して重複を削除して有効にします。
以上がmysql での重複排除の 2 つの方法の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。