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,否则不应存在此错误。
请注意:我为此使用 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,否则不应存在此错误。