2010-04-21 99 views
7

我需要找到一种方法来执行INSERT INTO table A,但其中一个值是来自表B上的查找,请允许我说明。如何从另一个表中查找基于查找的值?

我有2个以下表:

表A:

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

表B:A的

B1: String 
B2: Integer Value 

实施例行:{ “值”,101 ,MoreData} B的示例行:{“English”,101}

现在,我知道我需要将以下内容插入到{“Value2”,“English”,MoreData}中,但显然这不起作用,因为它期望第二列中的Integer不是单词“English”,所以我需要先在表B中进行查找。

事情是这样的:

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

显然,这并不工作,因为,是...

有什么建议?

回答

6

怎么样:

Insert into tableA (a1,a2,a3) 
(select "value2", b2, moreData from TableB where B1 = "English") 
+0

似乎不工作...抱怨语法附近选择。如果这是标准方法,那么我必须在某处出现错字(现在正在查看)。 但是,我的一位朋友告诉我以下内容“在VALUES子句中,您只能指定变量或常量”。我认为他错了(必须有一种方法) – Shaitan00 2010-04-21 17:51:49

+0

也许这是'select ...'部分的括号?特别是在SQL Server中,它们并不是必需的,可能也是非法的。不过,不知道其他服务器产品。 – 2011-01-30 11:28:21

1

这似乎是更多的跨DBMS没有括号,如@Andriy中号评论说:

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