ホームページ >バックエンド開発 >PHPチュートリアル >DISTINCT_PHP チュートリアルに関する質問と回答

DISTINCT_PHP チュートリアルに関する質問と回答

WBOY
WBOYオリジナル
2016-07-13 17:01:23958ブラウズ

友人からも同様の質問がよくあります
表のデータは次のとおりです
ID AA BB
1 123 456
1 4535 54
1 60 6564
1 60 656
2 50 664
2 60 6
3 89 89
4 40 4242
望ましい結果は
ID AA BB
1 123 456
2 50 664
3 89 89
4 40 4242
もちろん、環境はSQL Serverです
答えと分析は次のとおりです:
1, Many友人、distinct を使用することで問題が解決することを願っていますが、それは不可能です。distinct は重複レコードを無視します
が、特定のフィールドが繰り返されるレコードではなく、まったく同じ重複レコードを無視します。そのため、そのようなものは
しかありません。構文
select unique ID,AA,BB from tName
select unique(ID),AA,BB from tName や
select ID,distinct AA,BB などの他の記述方法は無効です
2、group by と集計関数を使用します
select ID,MAX (AA) AS AA,MAX(BB) AS BB を ID ごとに tName グループから抽出すると、次の結果が得られます
ID AA BB
1 4535 6564
2 60 664
3 89 89
4 40 4242
ID は一意ですが、そうではありません 次のフィールドは同じレコードである必要があります
3、一時テーブルを使用します
IDENTITY(INT,1,1) を TID,ID,AA,BB として tName から #Tmp に選択します
t1.ID,t1 を選択します.AA,t1. BB from #Tmp t1 where t1.TID in
(select min(T2.TID) from #Tmp t2 group by t2.ID)
この方法で要件を満たす結果を得ることができます
ただし、次を使用します2 つの T-SQL ステートメント
および大量のデータがある場合、パフォーマンスの問題が非常に顕著になります
これまでのところ、T-SQL ステートメントを使用して同じ機能を実現する方法は見つかりませんでした。
もし誰かがいるなら何かあれば追加したいと思います


http://www.bkjia.com/PHPjc/631152.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631152.html技術記事友人からも同様の質問がよくあります。表のデータは次のとおりです。 ID AA BB 1 123 456 1 4535 54 1 60 6564 1 60 656 2 50 664 2 60 6 3 89 89 4 40 4242。 ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。