我想在更新列之前检查我想要更新的值是否已存在于表中。
例如:如果我有一个名为标记的表,其名称为 refresh_token ,标记。我只想更新一个空白的refresh_token,只要它们不存在具有相同值的其他refresh_token。
我有这个:
IF (NOT EXISTS(SELECT * FROM Tokens WHERE refresh_token = 'C08Rbs'))
BEGIN
UPDATE Tokens SET refresh_token='C08Rbs' WHERE id='2'
END
END;
但是它返回了一个错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF (NOT EXISTS(SELECT * FROM Tokens WHERE refresh_token = 'C08Rbs' at line
1
我该怎么做?
注意:我没有使用存储过程。我想用一个查询来做到这一点。
有没有办法可以使用if-else语句来做到这一点?因为如果值存在则执行语句
答案 0 :(得分:0)
您可以在一个声明中执行此操作:
UPDATE Tokens
SET refresh_token = 'C08Rbs'
WHERE id = '2' AND
NOT EXISTS (SELECT 1 FROM Tokens WHERE refresh_token = 'C08Rbs');
编辑:
糟糕!在MySQL中,您需要使用join
:
UPDATE Tokens t CROSS JOIN
(SELECT COUNT(*) as cnt
FROM Tokens
WHERE refresh_token = 'C08Rbs'
) tc
SET refresh_token = 'C08Rbs'
WHERE id = '2' AND tc.cnt = 0;
答案 1 :(得分:0)
试试这个:
IF (SELECT tocken_id FROM Tokens WHERE refresh_token = 'C08Rbs') IS NOT NULL THEN
BEGIN
UPDATE Tokens SET refresh_token='C08Rbs' WHERE id='2'
END
END IF;
其中tocken_id
是唯一字段或Tockens
表中的任何字段。