如果我从TableX得到colA的值,从TableY得到colB,从TableZ得到colC,我怎么写INSERT语句?
例如:INSERT INTO TableA(colA,colB,colC)VALUES(?,?,?)
任何想法是否有可能?
答案 0 :(得分:38)
INSERT INTO TableA(colA, colB, colC)
SELECT TableX.valA, TableY.valB, TableZ.valC
FROM TableX
INNER JOIN TableY ON :......
INNER JOIN TableZ ON ........
当然,TableX,TableY和TAbleZ也可能以其他方式相关(不是INNER JOIN)。
如果你无法在表格中找到任何关系,你也可以做三个单独的
SELECT @value1 = valA FROM TableX WHERE ......
SELECT @value2 = valB FROM TableY WHERE ......
SELECT @value3 = valC FROM TableZ WHERE ......
然后是这样的插入:
INSERT INTO TableA(colA, colB, colC)
VALUES(@value1, @value2, @value3)
这是最终的最后手段,你不能用一个SELECT
声明表达所有内容。
马克
答案 1 :(得分:24)
为了回应marc_s的回答,您可以从以下选择中的不相关表中查询:
INSERT INTO TableA
(colA, colB, colC)
SELECT
(SELECT valA FROM TableX WHERE ...),
(SELECT valB FROM TableY WHERE ...),
(SELECT valC FROM TableZ WHERE ...)
答案 2 :(得分:4)
Insert into TableA (ColA, ColB, ColC) . . .
必须是表A中的列名。
没有错Insert into TableA (ColA, ColB, ColC) . . .
Select TableX.Col1, TableY.Col1, TableZ.Col5
From TableX, TableY, TableZ
Where . . .
答案 3 :(得分:0)
您需要加入要进行选择的表格。
以下是SQL连接的资源:
www.w3schools.com/sql/sql_join.asp
您也可以查看www.simple-talk.com中涵盖SQL基础知识的人员的免费PDF手册: