2012-08-07 14 views
9

Ho una tabella che ha due colonne riempire una delle colonne selezionando altri dati della colonna della tabella, ma come posso riempire la colonna successiva perché non posso usare VALUE. Ecco il codiceInserire in una colonna selezionando un'altra colonna in un'altra tabella, ma come riempire la seconda colonna

INSERT INTO Numbers(number, val) SELECT LaptopID FROM Laptop WHERE Laptop.Pid = 2 

come si può vedere la colonna "val" lasciata vuota come posso riempirlo?

+0

Questo dipende da ciò che si desidera mettere in esso. Vuoi un valore predefinito, un valore memorizzato nella tabella 'Laptop', nessun valore (' NULL') o qualcos'altro? * (Inoltre, quale variante di SQL? SQL Server, MySQL, Oracle?) * – MatBailie

+0

si può fare in seguito .. INSERIRE NUMERI (numero, val) SELEZIONA LaptopID, 1 DA Laptop WHERE Laptop.Pid = 2 ma cosa vuoi inserire nella seconda colonna che sarebbe una domanda. – AJP

+0

Voglio riempire la colonna successiva anche con il valore memorizzato in un'altra tabella. questo è SQL Server CE –

risposta

19

Utilizzare NULL se la colonna permette esso:

INSERT INTO Numbers(number, val) 
SELECT LaptopID, NULL 
FROM Laptop WHERE Laptop.Pid = 2 

Oppure utilizzare il valore previsto (hardcoded) che si desidera.

Se il numero:

INSERT INTO Numbers(number, val) 
SELECT LaptopID, 2 
FROM Laptop WHERE Laptop.Pid = 2 

o se il testo:

INSERT INTO Numbers(number, val) 
SELECT LaptopID, 'val' 
FROM Laptop WHERE Laptop.Pid = 2 
+0

@ shervin- Nessun problema –

+0

possiamo dare variabile qui? 'INSERISCI I NUMERI (@columns)' ?? –

+0

@columns: = 'column_1, column_2' –

1

Lo si aggiungerà come argomento su SELECT. Per esempio:

INSERT INTO Numbers(number, val) 
    SELECT LaptopID, 'val' 
    FROM Laptop 
    WHERE Laptop.Pid = 2 
2

Se non si dispone di un valore corrispondente che ha bisogno di andare in serie; allora si può semplicemente mettere zero o NULL:

somethign come questo ---

INSERT INTO numbers (number, val) 
SELECT NULL, laptopid 
    FROM laptop 
WHERE laptop.pid = 2 
1

IMHO, è necessario un INNER JOIN con l'altra tabella, qualcosa di simile:

INSERT INTO Numbers(number, val) SELECT L.LaptopID, OT.OTHER_COLUMN FROM Laptop L 
INNER JOIN OTHER_TABLE OT ON L.SOME_COLUMN = OT.ANOTHER_SOME_COLUMN 
WHERE Laptop.Pid = 2 
1

SQLCE non supporta l'aggiornamento multiplo della tabella, quindi ho usato il seguente metodo

SELECT Laptop.LaptopID, Table2.val FROM Laptop, Table2 WHERE 
Laptop.Pid = 2 or where laptop.pid= table2.pid 

quindi inserire in massa usin g http://sqlcebulkcopy.codeplex.com/

Spero che aiuta :)

Problemi correlati