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

Какое использование ключевого слова WITH TIES в инструкции SELECT в SQL-запросах?

SELECT TOP 5 WITH TIES EmpNumber,EmpName 
FROM Employee 
Order By EmpNumber DESC

Этот выше запрос возвращает более пяти результатов. Каково использование запросов SQL с запросом "With Ties".

4b9b3361

Ответ 1

От TOP (Transact-SQL)

Используется, когда вы хотите вернуть две или несколько строк, которые привязываются к последнему месту в ограниченном наборе результатов.

Обратите внимание на пример

SQL Fiddle DEMO

У нас есть таблица с шестью буквами 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 в этом случае) существует только один раз.

Ответ 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

Ответ 3

В соответствии с BOL "WITH TIES" указывает, что дополнительные строки будут возвращены из базового результирующего набора с тем же значением в столбцах ORDER BY, которые будут отображаться как последние из строк TOP n (PERCENT). TOP... WITH TIES может быть указанных только в операторах SELECT, и только если указано предложение ORDER BY. "

Ссылка на эту ссылку Это может помочь Проект кода

ссылка 2

ссылка 3

Ответ 4

Предположим, у нас есть таблица myTable с данными ниже:

ID NAME SALARY

1 гиков 10000

4 Финч 10000

2 руб. 6000

3 Давид 16000

5 Лесли 7000

6 Ватсон 10000

Запрос: SELECT * из myTable

порядок по зарплате

получить только первые 3 строки;

Выход: Мы получили только первые 3 строки заказа по зарплате в порядке убывания

ID NAME SALARY

3 Давид 16000

1 гиков 10000

4 Финч 10000

Примечание: В приведенном выше результате мы получили первые 3 строки, упорядоченные по Salary в порядке убывания, но у нас есть еще одна строка с той же зарплатой, т.е. строка с именами Watson и Salary 10000, но она не появилась, потому что мы ограничил наш вывод только первыми тремя строками. Но это не является оптимальным, потому что большую часть времени в живых приложениях мы также должны отображать связанные строки.

Пример из реальной жизни - Предположим, у нас работает 10 гонщиков, и у нас есть только 3 приза, то есть первый, второй, третий, но предположим, что гонщики 3 и 4 завершили гонку вместе, поэтому в этом случае мы имеем связь между 3 и 4, и поэтому оба держателя позиции 3.

Ответ 5

С здесь

Использование 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, он вернул еще один продукт, чьи цены в списке совпадают с четвертым.

here

Ответ 6

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