请注意:我正在使用MySQL Workbench,所以有些错误可能与此有关(我不是100%肯定我害怕)
您好,
我正在为我的Uni项目工作,我接受一个CSV文件,其中包含客人列表和信息,例如他们感兴趣的课程区.CSV文件将包含感兴趣区域的实际名称,因为这个来自注册网页(开放日)。
我正在尝试访问我的Guest(joinTest)表中的感兴趣区域,加入Interests表(包含它们的ID号以及兴趣名称)并填充Guests中的InterestID列表
我现在正在使用测试表,直到我获得了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.
我现在完全被难倒了。我不知道从哪里开始。
如果需要更多信息,请告知我们。
答案 0 :(得分:1)
它是MySQL Workbench的具体内容。您可以在设置中禁用此行为,因为您的错误消息建议您:... toggle the option in Preferences -> SQL Queries and reconnect
。
PS您可以在没有SET SQL_SAFE_UPDATES = 0;
的代码中安全地运行此查询。
答案 1 :(得分:1)
默认情况下禁用SQL_SAFE_UPDATES,但Workbench启用它。如错误消息所示:toggle the option in Preferences -> SQL Queries and reconnect.
除非您在Web应用程序(php)中专门打开SQL_SAFE_UPDATES,否则不应存在此错误。