0

インタビューでこの質問をされましたが、よくある質問のように思えますが、解決策が見つからないので、あなたの助けが必要です

単純なSQLを使用し、rownum、rowid、top、またはlimitを使用せずにテーブルからトップ1行を取得する方法を教えてください。

ありがとう

4

3 に答える 3

3

トップなしのクエリのサンプル。

select * from Contests
Where ContestId = (SELECT MAX(ContestId) FROM Contests)
于 2013-07-04T18:54:58.463 に答える
2

row_number()関数とサブクエリを使用して、ANSI 標準 SQL を使用してこれを行うことができます。

select t.*
from (select t.*,
             row_number() over (order by <however you define the "top" row>) as seqnum
      from t
     ) t
where t = 1;

これは、「一番上の」行が何であるかを指定する順序付けの方法があることを前提としています。句がなければorder by、どの行でも構いません。

そして*、外側のクエリで使用しました。厳密に言えば、 を除いて、テーブルに列のみを含める必要がありますseqnum

于 2013-07-04T18:52:02.597 に答える
2

MS SQL Server では、 SET ROWCOUNT nステートメントを使用できます。次のように:

SET ROWCOUNT 1
SELECT * FROM Contests

これ:

「指定された数の行が返されると、SQL Server はクエリの処理を停止します。」

PS: これは、MySQL の LIMIT 句として制限を正しく理解した場合に使用する必要があります。

于 2013-07-04T19:50:27.093 に答える