MySQL 将 table 更新为 Select/Join

MySQL Update table with Select/Join

请注意:我为此使用 MySQL Workbench,所以一些错误可能与此具体相关(恐怕我不是 100% 确定)

嗨,

我正在为我的大学做一个项目,我接受一个 CSV 文件,其中包含客人列表和他们感兴趣的课程区域等信息。CSV 文件将包含感兴趣区域的实际名称因为这来自注册网页(开放日)。

我正在尝试获取我的客人的兴趣区域 (joinTest) table,加入兴趣 table(其中包含他们的 ID 号以及兴趣Name) 并填充 Guests table.

中的 InterestID 列

我现在正在使用测试 table,直到我得到正确的 SQL。这是我目前使用的SQL:

UPDATE joinTest
SET interestID = 
 (
   SELECT interest.interestID FROM joinTest 
   LEFT JOIN interest on joinTest.interestName = interest.interestName
 )
WHERE interestID IS NULL;

我试过了,但出现错误

Error Code: 1093. You can't specify target table 'joinTest' for update in FROM clause

所以我假设在 UPDATE 中加入连接时不能使用 SELECT 子句。

然后我尝试了这个:

UPDATE joinTest
INNER JOIN interest
ON jointest.interestname = interest.interestName
SET joinTest.interestID = interest.interestID;

我收到这个错误:

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.

我现在完全被难住了。我不确定从这里到哪里去。

如果需要更多信息,请告诉我。

这是 MySQL Workbench 具体的事情。您可以在设置中禁用此行为,因为您的错误消息会提示您:... toggle the option in Preferences -> SQL Queries and reconnect

PS 您可以在您的代码中安全地 运行 此查询而无需 SET SQL_SAFE_UPDATES = 0;.

SQL_SAFE_UPDATES 默认禁用,但 Workbench 启用。正如错误信息所说:toggle the option in Preferences -> SQL Queries and reconnect.

除非您在网络应用 (php) 中专门打开 SQL_SAFE_UPDATES,否则不应存在此错误。