SQLでのdistinctの使い方(4つの例の分析)

1468 ワード

distinctというキーワードは、余分な重複レコードをフィルタリングするために1つしか残っていないが、重複しないレコードのすべての値を返すのではなく、重複しないレコードの数を返すために使用されることが多い.その理由は、distinctはターゲットフィールドのみを返すことができ、他のフィールドを返すことができないためです.次に、SQLのdistinctの使い方をこの記事で共有します.必要な方は参考にしてください.
mysqlを使用する場合、あるフィールドの重複しないレコードをクエリーする必要がある場合があります.mysqlはdistinctというキーワードを提供して余分な重複レコードをフィルタリングして1つしか残っていませんが、重複しないレコードの数を返すのではなく、重複しないすべての値を返すのではなく、重複しないレコードの数を返すだけです.その原因はdistinctがターゲットフィールドを返すしかなく、他のフィールドを返すことができないためです.この問題は私を長い間悩ませていました.distinctで解決できない場合は、二重ループクエリーで解決するしかありません.このように、データ量が非常に大きいステーションにとって、効率に直接影響を与えるに違いありません.そのため、私は多くの時間を浪費しました.
テーブルには、重複する値が含まれる場合があります.これは問題ありませんが、異なる値だけをリストしたい場合があります.キーワードdistinctは、唯一異なる値を返すために使用されます.
表A:
例1
 
   
select distinct name from A

実行後の結果は次のとおりです.
 
例2
 
   
select distinct name, id from A

実行後の結果は次のとおりです.
実際には「name+id」に基づいて重さを除去し、distinctはnameとidに同時に作用し、この方式はAccessとSQLサーバが同時にサポートする.
例3:統計
 
   
select count(distinct name) from A;   -- name , SQL Server , Access
select count(distinct name, id) from A;   --SQL Server Access

例4
 
   
select id, distinct name from A;   -- , distinct

その他
distinct文にselectが表示するフィールドは、distinctが指定したフィールドのみであり、他のフィールドは表示されません.たとえば、テーブルAに「コメント」列がある場合、distinc nameと対応する「コメント」フィールドを取得したい場合、distinctで直接実現することは不可能です.