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

Bestil ved ikke at virke, når den indsættes i temp tabel

SQL-tabeller repræsenterer uordnet sæt. Er der noget uklart ved dette?

Når du SELECT fra en tabel, så er resultaterne uordnet . Den eneste undtagelse er, når du bruger en ORDER BY i den ydre forespørgsel. Så inkluder en ORDER BY og resultaterne vil være i orden.

EDIT:

Du kan fjerne arbejdet for sorteringen ved at introducere en klynget primærnøgle.

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

Når du så gør:

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

Den klyngede primærnøgle i #temp er garanteret i den rækkefølge, der er angivet af order by . Derefter forespørgslen:

select *
from #temp
order by id;

returnerer resultaterne i rækkefølge ved hjælp af det grupperede indeks. Ingen sortering er nødvendig.



  1. Kommasepareret streng i tabellens kolonne i SQL Server

  2. T-SQL-fejl, faldgruber og bedste praksis – vinduesfunktioner

  3. Jetty 7 + MySQL Config [java.lang.ClassNotFoundException:org.mortbay.jetty.webapp.WebAppContext]

  4. SQL Server Database Server Hardware Upgrade Case Study