我是MySQL的新手,正在尝试使以下伪代码起作用:
SELECT IF(
EXISTS(SELECT * FROM users WHERE `email`="admin" AND `token`="blablabla"),
(UPDATE * FROM sometable WHERE `var`="notimportant"),
"NOT_AUTHORIZED");
我要实现的目标是基于行的存在来运行代码,如果不存在,则返回一条消息或可用的东西。如果确实存在,请改为运行另一个SQL命令,然后返回那些结果。
这可能吗?
答案 0 :(得分:0)
使用无效语法很难理解您的意图。但您要问的要点是可以使用where
子句:
UPDATE sometable
SET . . .
WHERE var = 'notimportant' AND
EXISTS (SELECT 1 FROM users WHERE email = 'admin' AND token = 'blablabla');
您也可以将其表示为JOIN
。假设子查询最多返回一行:
UPDATE sometable t CROSS JOIN
(SELECT 1
FROM users
WHERE email = 'admin' AND token = 'blablabla'
LIMIT 1
) x
SET . . .
WHERE var = 'notimportant' ;