Подтвердить что ты не робот

Разница между первым и первым выбором 1 в SQL Select Query

У меня есть общее сомнение в sql. Что будет на самом деле "Top 1 1"? В чем смысл приведенного ниже запроса?

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

какова разница между выбором "TOP 1 1" и "SELECT 1" в запросе sql-сервера?

4b9b3361

Ответ 1

SELECT TOP 1 Средства Выбор самой первой записи в результирующем наборе

SELECT 1 Средство возвращает 1 в качестве результата

SELECT TOP 1 1 FROM [SomeTable] WHERE <SomeCondition> означает, что если условие истинно и любые строки возвращаются из select, верните только верхнюю строку 1 и верните только целое число 1 для строки (данные не возвращаются только с целым числом 1),

Ответ 2

В следующем, первый "1", который является частью "TOP 1", означает остановиться после того, как он достигнет единственного результата. Второй "1" - это просто потому, что автору действительно не важно, какой результат.

SELECT TOP 1 1 FROM WORKER

по существу, то же самое, что и

SELECT TOP 1 * FROM WORKER

Вопрос только в том, будет ли он более эффективным в части "EXISTS" запроса, чем просто

SELECT 1 FROM Manager...

Ответ 3

Запрос находит, если есть хотя бы один рабочий (топ 1) без менеджера. Предложение SELECT 1 действует как "return true".

Если есть менеджер, запрос select 1 from Manager M where M.Id = W.Id возвращает 1. Если нет менеджера, запрос возвращает NULL.

Ответ 4

SELECT TOP 1 1 будет выбирать ровно 0 или 1 1 с. SELECT 1 выберет 1 ровно N строк, где N - количество строк, соответствующих вашим критериям.

В вашем случае он ищет первого (TOP 1) рабочего, у которого нет менеджера. Однако, поскольку он SELECT TOP 1 1, все, что он делает, ищет существование рабочего, у которого нет менеджера.

Ответ 5

его работает как true false... например, выберите top 1 1 из Items, где ItemId = 4526000 он вернет 1, потому что, когда условие соответствует. если его совпадение не будет, ничего не вернется. => предположим, выберите top 10 1 из Items, где ItemId = 4526000 он вернет 1 в 5 раз, если ItemId повторяется 5 раз.