2015-07-30 14 views
5

Ho usato insert in command in SQL Server 2014, ma non lo inserisco come lo stesso ordine dei dati.Inserisci in Seleziona non inserisce correttamente lo stesso ordine dati

Mostra lo stesso numero di righe ma non lo stesso ordine di dati mostrato nelle figure sottostanti.

Il comando inserto è:

insert into [test].[dbo].[HöjdKortvågVänster] ([Höjd kortvåg vänster (null)]) select [Höjd kortvåg vänster (null)] from [test].[dbo].[test111] 

Figura 1: Scegliere il comando per la tabella di origine

enter image description here

Figura 2: Selezione comando per la tabella di destinazione

enter image description here

Cosa posso fare per risolvere questo problema?

+1

tuoi dati sono memorizzato e ordinato fisicamente a seconda della definizione dell'indice cluster. La clausola 'ORDER BY' viene ignorata durante l'operazione' INSERT'. – gotqn

+1

Grazie @gotqn. Quindi, cosa devo fare per inserirlo come lo stesso ordine? – YAcaCsh

+0

@gotqn Order By non viene ignorato durante l'inserimento. Semplicemente non l'ha usato affatto. –

risposta

5

I set di risultati SQL non sono ordinati, a meno che non si disponga di un order by. Le tabelle SQL non sono ordinate.

Tuttavia, SQL Server fornisce almeno un metodo per eseguire ciò che si desidera. Se si utilizza un in una tabella con e , l'identità viene incrementata in modo appropriato.

Quindi, un modo di fare ciò che si desidera è di avere come colonna [HöjdKortvågVänster]:

id int not null identity(1, 1) primary key 

insert into [test].[dbo].[HöjdKortvågVänster]([Höjd kortvåg vänster (null)]) 
    select [Höjd kortvåg vänster (null)] 
    from [test].[dbo].[test111] 
    order by <appropriate column here>; 

E poi, quando si esegue una query la tabella, ricorda il order by:

select * 
from [test].[dbo].[HöjdKortvågVänster] 
order by id; 
+0

Pensi che abbia bisogno dell'ID nelle tabelle di origine e di destinazione in entrambi? – YAcaCsh

+0

@YAcaCsh, avrete bisogno di una colonna di origine per 'ORDER BY' in' INSERT ... SELECT ... ORDER BY', che non deve necessariamente essere un 'IDENTITY'. La destinazione avrà bisogno di un 'IDENTITY' se usi questo secondo 'ORDER BY'. Se hai la stessa colonna sia per l'origine che per la destinazione, forse non hai affatto bisogno di "IDENTITÀ". –

+0

@DanGuzman, ho provato ma non funziona. Non è ordinato – YAcaCsh

Problemi correlati