[英]Update a foreign key by matching a column other than primary key in another table
我试图更新FooID
列Table_One
与FooID
从表中的两个。 我具有要针对Table One
进行更新的行的主键,但是我需要从存在给定Description
Table_Two
中获取该ID。 可以这么说,我知道Table_One Primary_ID = 3
需要具有Table_One Primary_ID = 3
的FooID
,因为FooID
的Table_Two
具有对“ Bar”的描述。 我可以使用哪种SQL语句根据Description
的值来匹配ID?
表_一
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| Primary_ID| int(11) | NO | PRI | NULL | |
| Statement | text | YES | | NULL | |
| FooID | int(11) | YES | MUL | NULL | |
+-----------+---------+------+-----+---------+-------+
Table_Two
+------------+--------------+------+-----+---------+----------------+
| 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';
第一次尝试返回零结果,第二次尝试一直说Table_Two
中的列不存在。 我也尝试了其他一些方法,但是没有任何效果。 这些是我最接近可以工作的东西。
如果要使用表2中的已知记录获取的值更新表1中的已知记录,则不需要太复杂。 您可以通过在一个查询中从表二中获取值,然后在一秒钟内更新表一中的记录来实现。 尽管可以通过将子查询用作标量操作数来在一个查询中执行此操作 。
UPDATE Table_One SET FooID =
(SELECT FooID FROM Table_Two WHERE Description = 'Bar')
WHERE Primary_ID = 3;
第一种选择中的集合似乎是错误的:
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;
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.