0

我已经通过谷歌和这里搜索但没有找到我的问题的答案。

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

IF EXISTS (SELECT *  FROM TABLE WHERE COLUMN=VALUE) THEN
DO SOMETHING
END IF;

我在 MySql Workbench 中尝试过但没有用(语法错误)。

有人知道是否可以以这种方式使用 IF 吗?

提前致谢。

4

2 回答 2

1

这取决于什么是某事

如果是 UPDATE、DELETE 或 SELECT,则可以在 where 子句中指定条件。

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

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

于 2013-01-19T17:21:33.677 回答
0

在您的评论中,您说“某事”是一项INSERT操作。然后,您可以,而不是:

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

利用:

INSERT INTO tableName
  (colA, colB, ...)
SELECT
  a, b, ... 
FROM 
  dual
WHERE
  EXISTS (SELECT * FROM TABLE WHERE COLUMN=VALUE) ;
于 2013-01-19T18:22:53.323 回答