如何根据另一张表的查询结果插入一个值?

10
我需要找到一种方法来进行INSERT INTO table A,但其中一个值来自于table B的查找结果,让我举个例子。

我有以下两个表:

Table A:

A1: String
A2: Integer value coming from table B
A3: More Data

表格 B:

B1: String
B2: Integer Value

A的示例行:{"Value", 101,MoreData} B的示例行:{"English", 101}

现在,我知道我需要将以下内容插入到A中:{"Value2","English",MoreData},但显然这不起作用,因为它期望第二列是整数而不是单词"English",因此我需要先在B表中查找。

类似于这样:

INSERT INTO tableA (A1, A2, A3) 
VALUES ("Value2", SELECT B2 FROM tableB where B1="English", MoreData);

显然,这个代码不能直接运行...

有什么建议吗?

2个回答

9
如何呢:
Insert into tableA ( a1,a2,a3) 
(select "value2", b2, moreData from TableB where B1 = "English")

似乎不起作用...在SELECT附近抱怨语法。如果这是标准方法,那么我一定有拼写错误(现在正在查找)。但是,我的一个朋友告诉我以下内容:“在VALUES子句中,您只能指定变量或常量”。我认为他是错的(肯定有办法)。 - Shaitan00
也许是 select... 部分周围的括号引起的问题?特别是在 SQL Server 中,它们不需要,并且可能是非法的。不过其他服务器产品我就不太清楚了。 - Andriy M

2

正如 @Andriy M 所评论的那样,它似乎更跨数据库管理系统而不需要括号:

insert into tableA (a1, a2, a3) 
select 'value2', b2, moreData from tableB where B1='English'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接