2012-08-07 77 views
9

我有一个表有两列我会通过选择其他表列数据来填充其中一列,但是如何填充下一列因为我无法使用VALUE。这里的代码通过选择其他表中的另一列插入到一列中,但如何填充第二列

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

正如你可以看到“val”列留空如何填补这一点?

+0

这取决于你想放在里面。你想要一个默认值,一个存储在'Laptop'表中的值,根本没有值('NULL'),或者其他的东西? *(还有,SQL的哪个变体?SQL Server,MySQL,Oracle?)* – MatBailie 2012-08-07 15:39:54

+0

您可以做以下操作.. INSERT INTO Numbers(number,val)SELECT LaptopID,1 FROM Laptop WHERE Laptop.Pid = 2 但是你想要什么插入第二栏,这将是问题。 – AJP 2012-08-07 15:41:35

+0

我想用另一个表中存储的值填充下一列。这是sql服务器CE – 2012-08-07 15:42:44

回答

19

使用NULL列是否允许它:

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

或使用你想要的目的(硬编码)的值。

如果号码:

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

,或者如果文本:

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

@ shervin-没问题 – 2012-08-07 16:09:11

+0

我们可以在这里给变量吗? 'INSERT INTO Numbers(@columns)'? – 2016-12-31 10:18:03

+0

@columns:='column_1,column_2' – 2016-12-31 10:18:25

1

您可以将它作为参数添加到SELECT中。例如:

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

如果没有,需要进入数字对应的值;然后你可以把零或NULL:

Somethign这样---

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

恕我直言,你需要一个INNER与其他表连接,这样的事情:

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不支持多表更新等,所以我用下面的方法

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

然后批量插入usin g http://sqlcebulkcopy.codeplex.com/

希望它有帮助:)

相关问题