31

私はSQLに一般的な疑問を持っています。"Top 1 1" は実際に何をするのでしょうか? 以下のクエリの意味は何ですか?

select top 1 1 from Worker W where not exists (select 1 from Manager M where M.Id = W.Id)

SQL Server クエリの select "TOP 1 1" と "SELECT 1" の違いは何ですか?

4

5 に答える 5

48

SELECT TOP 1結果セットの最初のレコードを選択することを意味します

SELECT 1結果セットとして 1 を返すことを意味します

SELECT TOP 1 1 FROM [SomeTable] WHERE <SomeCondition>条件が true で、select から行が返された場合、一番上の1行のみを返し1、その行の整数のみを返します (データはなく、整数 1 のみが返されます)。

于 2013-10-14T11:57:20.360 に答える
15

以下では、「TOP 1」の一部である最初の「1」は、単一の結果に達した後に停止することを意味します。2 番目の「1」は、作成者が結果がどうなるかを本当に気にしていないためです。

SELECT TOP 1 1 FROM WORKER

本質的に同じです

SELECT TOP 1 * FROM WORKER

唯一の問題は、クエリの「EXISTS」部分でより効率的かどうかです。

SELECT 1 FROM Manager...
于 2015-03-18T23:54:16.137 に答える
4

このリクエストは、マネージャーのいないワーカーが少なくとも 1 人 (トップ 1) 存在するかどうかを検出します。SELECT 1 句は、"return true" として機能します。

マネージャが存在する場合、リクエストselect 1 from Manager M where M.Id = W.Idは 1 を返します。マネージャが存在しない場合、リクエストは NULL を返します。

于 2013-10-14T11:58:34.410 に答える
1

SELECT TOP 1 1正確に 0 または 1 1秒を選択します。 正確に N 行SELECT 1を選択します。ここで、N は条件に一致する行の数です。1

あなたの場合、マネージャーを持たない最初の( ) ワーカーを探しています。TOP 1ただし、 ですので、管理者がいないワーカーの存在SELECT TOP 1 1を探しているだけです。

于 2013-10-14T11:58:44.963 に答える
1

true false のように機能します... たとえば、ItemId=4526000 の項目から上位 1 1 を選択すると、条件が一致するため 1 が返されます。一致しない場合、何も返されません。=> ItemId=4526000 のアイテムから上位 10 1 を選択すると、ItemId が 5 回繰り返された場合、5 回で 1 が返されます。

于 2016-09-14T07:10:04.973 に答える