Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 基于WHERE子句中变量中的值更新记录_Mysql_Sql - Fatal编程技术网

Mysql 基于WHERE子句中变量中的值更新记录

Mysql 基于WHERE子句中变量中的值更新记录,mysql,sql,Mysql,Sql,我尝试执行此查询并获取错误代码:1175 use正在使用安全模式,您试图在不使用where子句的情况下更新表 set @email = 'foo@bar.com'; set @id = ( SELECT u.id FROM user u WHERE u.email_id = @email ); UPDATE user SET date_of_birth = '1985-10-01' WHERE id = @id; 这就是问题所在 set @email = 'foo@

我尝试执行此查询并获取错误代码:1175 use正在使用安全模式,您试图在不使用where子句的情况下更新表

set @email = 'foo@bar.com';
set @id =
(
    SELECT u.id
    FROM user u
    WHERE u.email_id = @email
);

UPDATE user SET date_of_birth = '1985-10-01' 
WHERE id = @id;
这就是问题所在

set @email = 'foo@bar.com';
UPDATE user SET date_of_birth = '1985-10-01' 
WHERE email_id = @email;

我不想禁用安全模式。

由于您不想在MySQL Workbench中禁用安全模式,您可能需要调整查询,以便在where子句中使用主键

set @email = 'foo@bar.com';
set @id =
(
    SELECT u.id
    FROM user u
    WHERE u.email_id = @email
);

UPDATE user SET date_of_birth = '1985-10-01' 
WHERE id = @id;
或直接:

SET @id = 42;

UPDATE user SET date_of_birth = '1985-10-01' 
WHERE id = @id;
或者,暂时禁用安全模式(这是我将选择的选项):


在where子句中使用PK在工作台上尝试吗?是的,在where clauseEyes@Abdulrehmansheikh中使用PK你在where子句中尝试过使用PK吗?如果我使用第二个解决方案,我将返回错误代码:1093。无法在中为更新指定目标表“用户”clause@RajatVerma我更改了第一个查询