5

たとえば、この質問に対する回答を使用すると、次のようになります。

10 件以上の投稿 を行ったすべてのユーザーを選択する方法 「10 件以上の投稿を行ったすべてのユーザーを選択する方法」。

select userId
from submission   
group by userId
having count(submissionGuid) > 10

このSQLステートメントが出力した多くの行を知りたいとしましょう。行をカウントする行をカウントするためのソリューションはどの程度スケーラブルですか?

4

4 に答える 4

12

以前に投稿された例のわずかなエラー。サブクエリのテーブル名のエイリアスが必要です。


select count(*) from
  (select userId
   from submission 
   group by userId
   having count(submissionGuid) > 10) t

スケーラビリティについてはよくわかりませんが、これが解決策です。これが十分に拡張されていない場合は、主要な設計変更を検討する必要があります。たとえば、10 件を超える申請を送信した人を別のテーブルで追跡し、申請を入力するアプリケーションを通じて更新します。または、他の多くの可能な解決策。

于 2008-10-29T04:20:31.373 に答える
5

ネストされたクエリ:

select count(*) from
  (select userId
   from submission   
   group by userId
   having count(submissionGuid) > 10) n

ネストされたサブクエリにエイリアス (末尾の「n」) が必要であるという mbrierst のコメントを組み込むために編集されました。Oracle ではこれは必要ありませんが、SQL Server では必要です。他のデータベース プラットフォームでの使用に関するコメントを自由に追加してください。

于 2008-10-29T04:15:19.153 に答える
3

SQL Serverでできること

select @@ROWCOUNT 

投稿したクエリの直後。

于 2008-10-29T04:11:37.633 に答える