sql >> Databasteknik >  >> RDS >> Sqlserver

Beställ genom att inte fungera när den sätts in i temptabellen

SQL-tabeller representerar oordnade set. Är det något oklart med detta?

När du SELECT från en tabell är resultaten oordnade . Det enda undantaget är när du använder en ORDER BY i den yttre frågan. Så inkludera en ORDER BY och resultaten kommer att vara i sin ordning.

EDIT:

Du kan ta bort arbetet för sorteringen genom att introducera en klustrad primärnyckel.

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

Sedan när du gör det:

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

Den klustrade primärnyckeln i #temp är garanterat i den ordning som anges av order by . Sedan frågan:

select *
from #temp
order by id;

returnerar resultaten i ordning, med hjälp av det klustrade indexet. Ingen sortering kommer att behövas.



  1. EM12c Databas Tid Spendet Väntar på varningar

  2. MySQL InnoDB dödläge problem med två samma frågor (olika parametrar)

  3. Kombinera resultat för SQL-fråga

  4. Kör dynamisk SQL-fråga i Oracle