SQL での unique キーワードの 4 つの使用法

坏嘻嘻
リリース: 2018-09-15 09:42:11
オリジナル
2331 人が閲覧しました

この記事では、SQL での unique キーワードの 4 つの使用法 (コード例) を紹介します。必要な方は参考にしていただければ幸いです。

mysql を使用する場合、一意のフィールドを持つレコードをクエリする必要がある場合があります。mysql には、重複するレコードをフィルターして 1 つだけ保持するための unique キーワードが用意されていますが、多くの場合、重複レコードの数を返すために使用されます。重複レコードのないすべての値を返すために使用するのではなく、重複レコードを使用します。その理由は、distinct はターゲット フィールドのみを返すことができ、他のフィールドを返すことができないためです。この問題は、distinct で解決できない場合は、二重ループ クエリで解決するしかありません。大量のデータの場合は、間違いなく効率に直接影響します。そこで私はこの問題を調べるのに多くの時間を費やしましたが、オンラインで解決策を見つけることができませんでした。その結果、私たちは二人とも落ち込んでいました。最初に例を見てください:

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

なぜ個別に機能しないのでしょうか?これは機能しますが、同時に 2 つのフィールドに影響します。つまり、除外するには ID と名前が同じである必要があります。 。 。 。 。 。 。

クエリ ステートメントを再度変更してみましょう:

select id, unique name from table

残念ながら、エラー情報以外は何も取得できません。distinct は次の場所に配置する必要があります。始まり 。 where条件にdistinctを入れるのはそんなに難しいですか?はい、それでもエラーが報告されます。 。 。 。 。 。 。

面倒ですか?実際、あらゆる努力をしてもこの問題は解決できませんでした。誰かに問い続けるしかない。

社内の JAVA プログラマーを捕まえて、Oracle での distinct の使用方法を教えてもらいましたが、MySQL では解決策が見つかりませんでした。最後に、退社する前に、group by を試してみたらどうかと提案してくれました。 。

長い間試してみましたが、最終的に、mysql マニュアルで group_concat(distinct name) を使用して必要な機能を実現しました。とても興奮しています。神のご加護がありましたら、できるだけ早く試してみます。

エラー報告。 。 。 。 。 。 。 。 。 。 。 。押し下げられた。 。 。 。 。 。 。 mysql マニュアルさえ私には理解できませんでした。それは私に最初は希望を与えましたが、その後はとても残酷でした。 。 。 。

注意深く調べた結果、group_concat 関数は 4.1、halo、私は 4.0 でサポートされています。他に方法はありません。アップグレードして、アップグレード後に試して、成功します。 。 。 。 。 。

ようやく完了しましたが、その後、お客様にもアップグレードを依頼する必要があります。

ふと、group_concat関数が使えるから他の関数​​も使えるのではないか?

急いで count 関数を試してみてください。うまくいきました。 。 。 。 。 。 。泣きたいです、大変な努力が必要でした。 。 。 。 。 。 。 。それはとても簡単だということが分かりました。 。 。 。 。 。

ここで完全なステートメントを解放します:

select *, count(distinct name) from table group by name
ログイン後にコピー

結果:

id name count(distinct name)

1 a 1

2 b 1

3 c 1

以上がSQL での unique キーワードの 4 つの使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート