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

时间:2018-07-07 21:37:05

标签: mysql sql

我是MySQL的新手,正在尝试使以下伪代码起作用:

SELECT IF( EXISTS(SELECT * FROM users WHERE `email`="admin" AND `token`="blablabla"), (UPDATE * FROM sometable WHERE `var`="notimportant"), "NOT_AUTHORIZED");

我要实现的目标是基于行的存在来运行代码,如果不存在,则返回一条消息或可用的东西。如果确实存在,请改为运行另一个SQL命令,然后返回那些结果。

这可能吗?

1 个答案:

答案 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' ;