Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Bestellen Sie, indem Sie beim Einfügen in die temporäre Tabelle nicht funktionieren

SQL-Tabellen repräsentieren ungeordnet setzt. Ist daran etwas unklar?

Wenn Sie SELECT aus einer Tabelle, dann sind die Ergebnisse ungeordnet . Die einzige Ausnahme ist, wenn Sie einen ORDER BY verwenden in der äußeren Abfrage. Fügen Sie also einen ORDER BY hinzu und die Ergebnisse werden in Ordnung sein.

BEARBEITEN:

Sie können die Arbeit eliminieren für die Sortierung durch Einführung eines geclusterten Primärschlüssels.

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

Wenn Sie dann Folgendes tun:

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

Der gruppierte Primärschlüssel in #temp garantiert in der durch order by angegebenen Reihenfolge . Dann die Abfrage:

select *
from #temp
order by id;

gibt die Ergebnisse der Reihe nach zurück, wobei der gruppierte Index verwendet wird. Es wird keine Sortierung benötigt.