2009-11-27 8 views
3

Comment transmettre les valeurs par défaut dans la construction Insert Select dans SQL?Valeurs par défaut dans Insert Select dans SQL

J'ai une table:

create table1 (field1 int, field2 int, field3 int default 1337) 
    create table2 (field1 int, field2 int) 

Je veux insérer table2 dans table1 avec une construction similaire à ceci:

insert into table1 select field1, field2, DEFAULT from table2 

Est-il possible d'utiliser quelque chose au lieu de DEFAULT dans mon exemple faire la tâche? Comment les tables précédemment sélectionnées sont-elles généralement insérées avec les valeurs par défaut?

Répondre

6

Essayez

INSERT INTO table1 (field1, field2) 
SELECT field1, field2 FROM table2 

J'ai testé cela en utilisant SQL Server 2005

DECLARE @Table1 TABLE(
     field1 INT, 
     field2 INT, 
     field3 INT DEFAULT 1337 
) 

INSERT INTO @Table1 (field1,field2,field3) SELECT 1, 2, 3 

DECLARE @Table2 TABLE(
     field1 INT, 
     field2 INT 
) 

INSERT INTO @Table2 (field1,field2) SELECT 15, 16 

INSERT INTO @Table1 (field1,field2) 
SELECT field1, 
     field2 
FROM @Table2 

SELECT * FROM @Table1 
+0

@astander: Il ne fonctionne pas sous SQL Server. – Alex

+0

@Alec, jetez un oeil à l'exemple dans ma réponse. –

+0

@astander: Oui, il est sorti ça marche. J'ai d'abord essayé avec des «valeurs». @Don: Il ne devrait pas y avoir de 'valeurs' avec select, 'values' est suivi par les valeurs réelles entre parenthèses plutôt que select :) – Alex

Questions connexes