我正在尝试使用表格2中的FooID
更新Table_One
中的FooID
列。我拥有要为Table One
更新的行的主键,但我需要从Table_Two
获取该ID,其中存在给定的Description
。所以说我知道Table_One Primary_ID = 3
需要FooID
为3,因为FooID
的{{1}}有“Bar”的描述。我可以使用哪种SQL语句来匹配基于Table_Two
?
Table_One
Description
Table_Two
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| Primary_ID| int(11) | NO | PRI | NULL | |
| Statement | text | YES | | NULL | |
| FooID | int(11) | YES | MUL | NULL | |
+-----------+---------+------+-----+---------+-------+
到目前为止,我尝试了类似的一些事情:
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| FooID | int(11) | NO | PRI | NULL | auto_increment |
| Description| varchar(140) | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
以及:
UPDATE Table_one
INNER JOIN Table_Two ON (Table_One.FooID = Table_Two.FooID AND Table_Two.Description = 'Bar')
SET ksa.FooID = competency.FooID;
第一次尝试返回零结果,第二次尝试一直说UPDATE Table_One
SET
`FooID` = [SELECT FooID FROM Table_Two]
WHERE `Table_Two`.`Description` = 'Bar';
中的列不存在。我也尝试了其他一些东西,但没有任何效果。这些是我最接近工作的东西。
答案 0 :(得分:0)
如果要更新表1中的已知记录,并且要从表2中的已知记录中获取值,则不需要太复杂的任何内容。您可以通过在一个查询中从表二中获取值,然后在一秒内更新表一中的记录来完成此操作。您可以使用subquery as a scalar operand在一个查询中执行此操作。
UPDATE Table_One SET FooID =
(SELECT FooID FROM Table_Two WHERE Description = 'Bar')
WHERE Primary_ID = 3;
答案 1 :(得分:0)
第一种选择中的集合似乎是错误的:
UPDATE Table_one
INNER JOIN Table_Two ON (Table_One.FooID = Table_Two.FooID AND Table_Two.Description = 'Bar')
SET ksa.FooID = competency.FooID;
你试过这个:
UPDATE Table_one
INNER JOIN Table_Two ON (Table_One.FooID = Table_Two.FooID AND Table_Two.Description = 'Bar')
SET FooID = Table_Two.FooID;