Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come utilizzare Top with Ties in SQL Server - Tutorial SQL Server / TSQL Parte 114

Nell'ultimo post, abbiamo imparato come restituire le righe x in alto / in basso dalla tabella del server sql. In questo post impareremo Top con cravatta.

Secondo BOL
"CON CRAVATTA
Utilizzato quando si desidera restituire due o più righe che si equivalgono per l'ultimo posto nel set di risultati limitato. Deve essere utilizzato con la clausola ORDER BY. WITH TIES può causare la restituzione di più righe rispetto al valore specificato in expression. Ad esempio, se l'espressione è impostata su 5 ma 2 righe aggiuntive corrispondono ai valori delle colonne ORDER BY nella riga 5, il set di risultati conterrà 7 righe. "

Creiamo la tabella dbo.Customer e scopriamo la differenza tra Top e Top With Ties.

Create table dbo.Customer(
Id int,
Name VARCHAR(10),
Address VARCHAR(100))

--Insert records in dbo.Customer table
Insert into dbo.Customer
Values(1,'Aamir','XyZ Address')
,(2,'Raza',Null)
,(1,'Aamir','XyZ Address')
,(1,'John','XyZ Address')
,(5,'Lisa','XyZ Address')
 Ho notato che abbiamo record duplicati come evidenziato sopra. Eseguiamo le query seguenti, prima con solo Top e la seconda con "With Ties" e osserviamo l'output.

Select top (2) * From dbo.Customer 
order by ID
how to use Top x to get top records from table in SQL Server - TSQL Tutorial
Select top (2) WITH TIES * From dbo.Customer order by ID
 
Come utilizzare Top with Ties in SQL Server per ottenere Top x righe - Tutorial SQL Server/TSQL
 La prima query ha restituito solo 2 record, ma la seconda query con "With Ties" ha restituito tre record poiché anche il valore per Id per il terzo record era 1 corrispondente alla seconda riga ( valore della colonna id =1). Se utilizzi "Con legami" con In alto, la query ti fornirà anche tutti i legami con l'ultima riga in base alla colonna dell'ordine.