gpt4 book ai didi

mysql - 通过匹配另一个表中主键以外的列来更新外键

转载 作者:行者123 更新时间:2023-11-29 23:49:18 24 4
gpt4 key购买 nike

我正在尝试使用表二中的 FooID 更新 Table_One 中的 FooID 列。我有要更新的 Table One 行的主键,但我需要从 Table_Two 获取该 ID,其中给定的 Description存在。假设我知道 Table_One Primary_ID = 3FooID 需要为 3,因为 Table_TwoFooID 有“酒吧”的描述。我可以使用什么样的SQL语句根据Description的值来匹配ID?

表_One

+-----------+---------+------+-----+---------+-------+
| 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';

第一次尝试返回零结果,第二次尝试一直提示 Table_Two 中的列不存在。我也尝试了其他一些方法,但没有任何效果。这些是我最接近可行的东西。

最佳答案

如果您想使用从表二中的已知记录获取的值来更新表一中的已知记录,那么您不需要任何太复杂的东西。您可以通过在一个查询中从表二中获取值,然后在一秒钟内更新表一中的记录来完成此操作。您可以通过使用 subquery as a scalar operand 在一个查询中完成此操作.

UPDATE Table_One SET FooID = 
(SELECT FooID FROM Table_Two WHERE Description = 'Bar')
WHERE Primary_ID = 3;

关于mysql - 通过匹配另一个表中主键以外的列来更新外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25729345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com