インタビューでこの質問をされましたが、よくある質問のように思えますが、解決策が見つからないので、あなたの助けが必要です
単純なSQLを使用し、rownum、rowid、top、またはlimitを使用せずにテーブルからトップ1行を取得する方法を教えてください。
ありがとう
インタビューでこの質問をされましたが、よくある質問のように思えますが、解決策が見つからないので、あなたの助けが必要です
単純なSQLを使用し、rownum、rowid、top、またはlimitを使用せずにテーブルからトップ1行を取得する方法を教えてください。
ありがとう
トップなしのクエリのサンプル。
select * from Contests
Where ContestId = (SELECT MAX(ContestId) FROM Contests)
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
。
MS SQL Server では、 SET ROWCOUNT nステートメントを使用できます。次のように:
SET ROWCOUNT 1
SELECT * FROM Contests
これ:
「指定された数の行が返されると、SQL Server はクエリの処理を停止します。」
PS: これは、MySQL の LIMIT 句として制限を正しく理解した場合に使用する必要があります。