sql >> Databáze >  >> RDS >> Sqlserver

Objednávka nefunguje při vkládání do dočasné tabulky

SQL tabulky představují neuspořádané sady. Je na tom něco nejasného?

Když SELECT z tabulky, pak jsou výsledky neuspořádané . Jedinou výjimkou je použití ORDER BY ve vnějším dotazu. Zahrňte tedy ORDER BY a výsledky budou v pořádku.

EDIT:

Můžete odstranit práci pro řazení zavedením seskupeného primárního klíče.

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

Potom, když to uděláte:

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

Seskupený primární klíč v #temp je zaručeno, že bude v pořadí uvedeném v order by . Poté dotaz:

select *
from #temp
order by id;

vrátí výsledky v pořadí pomocí seskupeného indexu. Nebude potřeba žádné řazení.



  1. Složený primární klíč JPA

  2. Jak použít %ROWTYPE při vkládání do tabulky Oracle se sloupcem identity?

  3. Koncepce návrhu databáze s SQL Server Management Studio (SSMS) část 1

  4. Problémy s T-SQL TRY CATCH?