web-dev-qa-db-fra.com

Quelle est l'utilisation du mot clé WITH TIES dans l'instruction SELECT dans les requêtes SQL?

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

Cette requête ci-dessus renvoie plus de cinq résultats. Quelle est l'utilisation du mot clé "With Ties"?.

44
user3098256

De TOP (Transact-SQL)

Utilisé lorsque vous souhaitez renvoyer deux lignes ou plus qui se lient pour la dernière place dans l'ensemble de résultats limité.

Notez l'exemple

SQL Fiddle DEMO

Nous avons une table avec 6 entrées 1 à 4 et 5 deux fois.

Fonctionnement

SELECT TOP 5 WITH TIES *
FROM MyTable 
ORDER BY ID;

renvoie 6 lignes, car la dernière ligne est liée (existe plusieurs fois).

Tandis que

SELECT TOP 5 WITH TIES *
FROM MyTable 
ORDER BY ID DESC;

ne renvoie que 5 lignes, car la dernière ligne (2 dans ce cas) n'existe qu'une seule fois.

51
Adriaan Stander

Vérifiez cette requête et elle sera plus claire.

SELECT TOP 5 WITH TIES *
FROM MyTable 
ORDER BY ID;

RÉSULTAT: - 1 2 3 4 5 5

SELECT TOP 5 *
FROM MyTable 
ORDER BY ID;

RÉSULTAT: - 1 2 3 4 5

8
Amee

Supposons que nous ayons une table nommée myTable avec les données ci-dessous:

ID NOM SALAIRE

1 Geeks 10000

4 Finch 10000

2 RR 6000

3 David 16000

5 Lesley 7000

6 Watson 10000

Requête: SELECT * de myTable

ordre par salaire desc

récupérer les 3 premières lignes uniquement;

Sortie: Nous n'avons obtenu que les 3 premières lignes par salaire par ordre décroissant

ID NOM SALAIRE

3 David 16000

1 Geeks 10000

4 Finch 10000

Remarque: Dans le résultat ci-dessus, nous avons obtenu les 3 premières lignes, classées par salaire dans l'ordre décroissant, mais nous avons une ligne de plus avec le même salaire, c'est-à-dire la ligne avec le nom Watson et le salaire 10000, mais cela n'a pas fonctionné. t est apparu, car nous avons limité notre sortie aux trois premières lignes uniquement. Mais ce n'est pas optimal, car la plupart du temps dans les applications en direct, nous devrons également afficher les lignes liées.

Exemple réel - Supposons que nous ayons 10 coureurs en course et que nous ayons seulement 3 prix, c'est-à-dire, premier, deuxième, troisième, mais supposons que les coureurs 3 et 4 ont terminé la course ensemble en même temps, donc dans ce cas où nous avons une égalité entre 3 et 4 et c'est pourquoi les deux sont titulaires de la position 3.

0
Salman Lone