SELECT TOP 5 WITH TIES EmpNumber,EmpName
FROM Employee
Order By EmpNumber DESC
Этот выше запрос возвращает более пяти результатов. Каково использование запросов SQL с запросом "With Ties".
SELECT TOP 5 WITH TIES EmpNumber,EmpName
FROM Employee
Order By EmpNumber DESC
Этот выше запрос возвращает более пяти результатов. Каково использование запросов SQL с запросом "With Ties".
Используется, когда вы хотите вернуть две или несколько строк, которые привязываются к последнему месту в ограниченном наборе результатов.
Обратите внимание на пример
У нас есть таблица с шестью буквами 1 - 4 и 5.
Выполнение
SELECT TOP 5 WITH TIES *
FROM MyTable
ORDER BY ID;
возвращает 6 строк, поскольку последняя строка привязана (существует более одного раза.)
Где
SELECT TOP 5 WITH TIES *
FROM MyTable
ORDER BY ID DESC;
возвращает только 5 строк, так как последняя строка (2 в этом случае) существует только один раз.
Проверить этот запрос и будет более понятным.
SELECT TOP 5 WITH TIES *
FROM MyTable
ORDER BY ID;
РЕЗУЛЬТАТ: - 1 2 3 4 5 5
SELECT TOP 5 *
FROM MyTable
ORDER BY ID;
РЕЗУЛЬТАТ: - 1 2 3 4 5
В соответствии с BOL "WITH TIES" указывает, что дополнительные строки будут возвращены из базового результирующего набора с тем же значением в столбцах ORDER BY, которые будут отображаться как последние из строк TOP n (PERCENT). TOP... WITH TIES может быть указанных только в операторах SELECT, и только если указано предложение ORDER BY. "
Ссылка на эту ссылку Это может помочь Проект кода
Предположим, у нас есть таблица myTable с данными ниже:
1 гиков 10000
4 Финч 10000
2 руб. 6000
3 Давид 16000
5 Лесли 7000
6 Ватсон 10000
Запрос: SELECT * из myTable
порядок по зарплате
получить только первые 3 строки;
Выход: Мы получили только первые 3 строки заказа по зарплате в порядке убывания
3 Давид 16000
1 гиков 10000
4 Финч 10000
Примечание: В приведенном выше результате мы получили первые 3 строки, упорядоченные по Salary в порядке убывания, но у нас есть еще одна строка с той же зарплатой, т.е. строка с именами Watson и Salary 10000, но она не появилась, потому что мы ограничил наш вывод только первыми тремя строками. Но это не является оптимальным, потому что большую часть времени в живых приложениях мы также должны отображать связанные строки.
Пример из реальной жизни - Предположим, у нас работает 10 гонщиков, и у нас есть только 3 приза, то есть первый, второй, третий, но предположим, что гонщики 3 и 4 завершили гонку вместе, поэтому в этом случае мы имеем связь между 3 и 4, и поэтому оба держателя позиции 3.
С здесь
Использование TOP WITH TIES для включения строк, соответствующих значениям в последний ряд
Если вы хотите использовать TOP WITH TIES, вы должны использовать заказ.
Создать таблицу
CREATE TABLE [dbo].[Products](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ProductName] [nvarchar](50) NULL,
[Price] [float] NULL)
GO
Следующее иллюстрирует инструкцию INSERT, которая вставляет строки в существующую таблицу
INSERT INTO [dbo].[Products] VALUES ('Bicycle 1' , 258.2)
INSERT INTO [dbo].[Products] VALUES ('Bicycle 2' , 265.3)
INSERT INTO [dbo].[Products] VALUES ('Bicycle 3' , 267.8)
INSERT INTO [dbo].[Products] VALUES ('Bicycle 4' , 268.9)
INSERT INTO [dbo].[Products] VALUES ('Bicycle 5' , 267.9)
INSERT INTO [dbo].[Products] VALUES ('Bicycle 6' , 267.9)
GO
затем
SELECT TOP 4 WITH TIES
ProductName, Price
FROM Products
ORDER BY Price
В этом примере два дорогих продукта имеют прейскурантную цену 267,9. Поскольку в заявлении использовалось TOP WITH TIES, он вернул еще один продукт, чьи цены в списке совпадают с четвертым.
SELECT * from myTable order by rank desc fetch first 3 rows With Ties;
дает
ID NAME Rank
--------------------------
3 Dhoni 1
1 Geeks 2
6 Watson 3 **// We get Tied Row also**
4 Finch 3