我有一个简单的update语句,该语句使用临时表来选择要更新的行的键:
UPDATE table
SET col6 = 1
WHERE id IN (
SELECT id
FROM temp_table
);
这会抛出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
但是,如果我这样做:
UPDATE table
SET col6 = 1
WHERE id = 2;
没有错误。
显然,我使用的是正确的密钥(id)。 temp_table中的所有id都是不同的(并存在于目标表中)。临时表中有9595行。我尝试设置我正在使用mysql工作台。
有人知道这是怎么回事吗?
更新:此功能在启用安全模式的情况下起作用:
UPDATE table
SET col6 = 1
WHERE id IN (
SELECT id
FROM temp_table
) LIMIT 10000;
仍然不明白为什么,但是认为它可能与选择限制有关……尽管我这样做:SET sql_select_limit=10000
原始查询仍然失败。