sql运行命令(如果行存在)

r55awzrz  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(277)

我是mysql的新手,我正在尝试使用以下伪代码: SELECT IF( EXISTS(SELECT * FROM users WHEREemail="admin" ANDtoken="blablabla"), (UPDATE * FROM sometable WHEREvar="notimportant"), "NOT_AUTHORIZED"); 我试图实现的是基于行的存在运行代码,如果行不存在,则返回一条消息或一些可用的内容。如果它确实存在,则运行另一个sql命令,并返回这些结果。
这可能吗?

tzdcorbm

tzdcorbm1#

你的意图是有点难以遵循无效的语法。但你问题的要点是你可以用 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' ;

相关问题