mysql查询中的If条件

mysql查询中的If条件,mysql,sql,if-statement,Mysql,Sql,If Statement,我在谷歌和这里搜索过,但没有找到我问题的答案 我尝试在查询中使用IF,而不是以这种方式使用存储过程: IF EXISTS (SELECT * FROM TABLE WHERE COLUMN=VALUE) THEN DO SOMETHING END IF; 我在MySql Workbench中尝试过,但没有遇到语法错误 有人知道用这种方法是否可以使用if吗 提前谢谢。这取决于什么是东西 如果是更新、删除或选择,可以在where子句中指定条件 WHERE IF( (SELECT COUNT(*)

我在谷歌和这里搜索过,但没有找到我问题的答案

我尝试在查询中使用IF,而不是以这种方式使用存储过程:

IF EXISTS (SELECT *  FROM TABLE WHERE COLUMN=VALUE) THEN
DO SOMETHING
END IF;
我在MySql Workbench中尝试过,但没有遇到语法错误

有人知道用这种方法是否可以使用if吗


提前谢谢。

这取决于什么是东西

如果是更新、删除或选择,可以在where子句中指定条件

WHERE IF( (SELECT COUNT(*) FROM TABLE WHERE COLUMN=VALUE) > 0, 1, 2) = 1

对于其他语句INSERT、CREATE等,我认为这是不可能的。

在您的评论中,您说有些东西是INSERT操作。然后,您可以代替:

INSERT INTO tableName
  (colA, colB, ...)
VALUES
  (a, b, ...) ;
使用:


您希望做什么?在这种情况下是插入。我需要执行插入,但在此之前,我需要检查是否已经存在具有这些值的行。@Valerio:那么,如果已经存在具有COLUMN=VALUE的记录,您不希望执行插入吗?为什么不在列上定义一个唯一的索引,它将为您强制执行这样的约束?有关插入,请参阅插入。。。在重复密钥更新时。这不完全一样,但也许这就是你所看到的for@eggyal:在我的情况下,我需要检查4列的重复值。我会用那种方式试试。非常感谢。我不知道这个语法:。我要试试。谢谢好的,我尝试过这种语法,我只需要在记录不存在的情况下插入,所以经过几次测试后,我发现正确的语法是:插入到tableName colA,colB。。。选择a、b、。。。如果不存在,则从dual中选择*表,其中列=值;谢谢我写评论有点问题;
INSERT INTO tableName
  (colA, colB, ...)
SELECT
  a, b, ... 
FROM 
  dual
WHERE
  EXISTS (SELECT * FROM TABLE WHERE COLUMN=VALUE) ;