2012-08-07 26 views
9

tengo una tabla que tiene dos columnas que llenaría una de las columnas seleccionando otros datos de columna de la tabla, pero ¿cómo puedo llenar la siguiente columna? porque no puedo usar VALUE. Aquí está el códigoInsertar en una columna seleccionando otra columna en otra tabla pero cómo llenar la segunda columna

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

como se puede ver la columna "val" queda vacía ¿cómo puedo llenar eso?

+0

Eso depende de lo que usted quiere poner en él. ¿Desea un valor predeterminado, un valor almacenado en la tabla 'Laptop', ningún valor (' NULL'), o algo más? * (Además, ¿qué variante de SQL? SQL Server, MySQL, Oracle?) * – MatBailie

+0

puedes hacer lo siguiente ... INSERTAR EN Números (número, val) SELECCIONAR LaptopID, 1 DE Laptop DONDE Laptop.Pid = 2 pero lo que quieres insertar en la segunda columna que sería una pregunta. – AJP

+0

Quiero llenar la siguiente columna con el valor almacenado en otra tabla también. este es el servidor SQL CE –

Respuesta

19

Uso NULL si la columna permite que:

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

O utilice el valor previsto (hardcoded) que desee.

Si Número:

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

o si el texto:

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

@ shervin- No hay problema –

+0

¿Podemos dar variable aquí? 'INSERT INTO Numbers (@columns)' ?? –

+0

@columns: = 'column_1, column_2' –

1

Lo agregará como argumento en SELECT. Por ejemplo:

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

Si usted no tiene un valor correspondiente que tiene que ir en número; a continuación, sólo se puede poner a cero o NULL:

somethign como esto ---

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

en mi humilde opinión, es necesario un INNER JOIN con esa otra mesa, algo como esto:

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 no es compatible con la actualización de varias tablas, etc., así que utilicé el siguiente método

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

luego a granel insertar usin g http://sqlcebulkcopy.codeplex.com/

espero que ayude :)

Cuestiones relacionadas