Разница между первым и первым выбором 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-сервера?
Ответы
Ответ 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 раз.