sql >> Database >  >> RDS >> Sqlserver

Bestellen door niet te werken bij invoegen in tijdelijke tabel

SQL-tabellen vertegenwoordigen ongeordend stelt. Is hier iets onduidelijk aan?

Wanneer u SELECT uit een tabel, dan zijn de resultaten ongeordend . De enige uitzondering is wanneer u een ORDER BY . gebruikt in de buitenste vraag. Voeg dus een ORDER BY toe en de resultaten zullen in orde zijn.

BEWERKEN:

U kunt het werk elimineren voor de sortering door een geclusterde primaire sleutel te introduceren.

create table #temp (
    Id int identity(1,1) primary key clustered, 
    SKU varchar(10),
    QtyRec int,
    Expiry date,
    Rec date
);

Wanneer je dat doet:

insert into #temp(SKU, QtyRec, Expiry, Rec)
    select SKU, QtyRec, Expiry, Rec
    from @Data
    order by id;

De geclusterde primaire sleutel in #temp is gegarandeerd in de volgorde gespecificeerd door de order by . Dan de vraag:

select *
from #temp
order by id;

zal de resultaten in volgorde retourneren, met behulp van de geclusterde index. Sorteren is niet nodig.



  1. Python-lijst van String naar SQL IN-parameter

  2. oracle connect door meerdere ouders

  3. Gerangschikte zoekresultaten retourneren met behulp van gin-index met sqlalchemy

  4. SQL-query om het aantal woorden in de tabel te krijgen