簡體   English   中英

根據 WHERE 子句中的變量值更新記錄

[英]Updating record based on the value in variable in WHERE clause

我正在嘗試執行此查詢並獲取錯誤代碼:1175 使用正在使用安全模式並且您嘗試在沒有 where 子句的情況下更新表。

這是查詢

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;

或者,暫時禁用安全模式(這是我選擇的選項):

set @email = 'foo@bar.com';

SET SQL_SAFE_UPDATES = 0;

UPDATE user SET date_of_birth = '1985-10-01' 
WHERE email_id = @email;

SET SQL_SAFE_UPDATES = 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM