2013-05-22 14 views
116

Chcę utworzyć tabelę od Wybierz wyniku zapytania w SQL Server, próbowałemJak utworzyć tabelę od Wybierz wyniku zapytania w SQL Server 2008

create table temp AS select..... 

ale mam błąd

niepoprawna składnia w pobliżu słowo kluczowe 'AS'

+0

Tworzenie tabeli temp, jak select 1 z podwójnym - (Oracle) – Elmer

+2

Czy znak jako duplikat może zostać cofnięty? Inne związane z tym pytanie jest znacznie mniej jasne i zawiera mniej odpowiedzi. –

Odpowiedz

219

Użyj następującej składni, aby utworzyć nową tabelę ze starym stole serwer SQL 2008

Select * into new_table from old_table 
+4

To tak naprawdę nie odpowiada na pytanie. Gdzie jest zapytanie "WYBIERZ"? – arman

+4

@Jason: Jest tam. To wszystko wokół klauzuli 'INTO' ... –

+0

@LukasEder Nie, on oznacza' select', który będzie tam w 'CREATE TABLE ... AS SELECT ...', który jest obecnie gdzie Sanjeev ma 'old_table'. To jest fajna linia kodu, ale brakuje jej funkcjonalności CTAS, ponieważ jest to tylko wybór z tabeli, a nie instrukcja SELECT, która jest celem wykonywania CTAS –

36

użytku SELECT...INTO

Instrukcja SELECT INTO tworzy nową tabelę i wypełnia ją zestawem wyników instrukcji SELECT. SELECT INTO może być użyte do łączenia danych z kilku tabel lub widoków w jedną tabelę. Można go również użyć do utworzenia nowej tabeli zawierającej dane wybrane z połączonego serwera .

Przykład,

SELECT col1, col2 INTO #a -- <<== creates temporary table 
FROM tablename 

standardowej składni,

SELECT col1, ....., [email protected]  -- <<== select as many columns as you want 
     INTO [New tableName] 
FROM [Source Table Name] 
+0

powinno to być oznaczone jako poprawna odpowiedź. – Led

+0

Uzgodnione. To jest poprawna odpowiedź. –

8

Spróbuj:

SELECT * INTO NewTable FROM OldTable 
1

Wybierz [polowe nazwy] z [New] z tabeli [Tabela Source]

9

Spróbuj użyć SELECT INTO ....

SELECT .... 
INTO  TABLE_NAME(table you want to create) 
FROM source_table 
22

Należy uważać, MSSQL: "SELECT * INTO NewTable FROM OldTable"

nie zawsze jest taka sama jak MySQL: "create table temp AS select.."

myślę, że istnieją sytuacje, kiedy to (w MSSQL) nie gwarantuje, że wszystkie pola w nowej tabeli są tego samego typu, co stare.

Na przykład:

create table oldTable (field1 varchar(10), field2 integer, field3 float) 
insert into oldTable (field1,field2,field3) values ('1', 1, 1) 
select top 1 * into newTable from oldTable 

nie zawsze wydajność:

create table newTable (field1 varchar(10), field2 integer, field3 float) 

ale mogą być:

create table newTable (field1 varchar(10), field2 integer, field3 integer) 
+2

To jest poprawne. Istnieje mnóstwo powtarzających się rozwiązań, które przekraczają tę krytyczną różnicę. –

+2

z oficjalnych dokumentów dla ** klauzula "SELECT - INTO (języka Transact-SQL)" **: "Każda kolumna w nowej_tablicy ma tę samą nazwę, typ danych, wartość zerową i wartość, co odpowiednie wyrażenie na liście wyboru." (https://docs.microsoft.com/en-us/sql/t-sql/queries/select-into-clause-transact-sql). Proszę, wybacz mojej niewiedzy, czy czegoś brakuje? – HEDMON

Powiązane problemy