MySQL中IF语句的正确语法是什么?

时间:2012-07-11 07:14:57

标签: mysql syntax if-statement

我有一个简单的MySQL代码。但每当我运行它时,我都会收到错误#1064。你能告诉我这里的错误是什么吗?

IF ((SELECT COUNT(id) FROM tbl_states) > 0) THEN
    BEGIN
        SELECT * FROM tbl_cities;
    END
END IF

我还使用了下面的一些其他条件,但我又遇到了错误。

IF (1=1) THEN
    BEGIN
        SELECT * FROM tbl_cities;
    END
END IF

我真正想做的是这样的事情:

IF ((SELECT COUNT(id) FROM tbl_states) > 0) THEN
    BEGIN
        UPDATE ...
    END
ELSE
    BEGIN
        INSERT ...
    END
END IF

4 个答案:

答案 0 :(得分:6)

如果是您正在撰写的程序,请尝试:

BEGIN
    IF ((SELECT COUNT(id) FROM tbl_states) > 0) THEN
        SELECT * FROM tbl_cities;
    END IF
END

如果是查询,BEGINEND无关。

修改

嗯,没有什么可说的,IF ((SELECT COUNT(id) FROM tbl_states) > 0) THEN SELECT * FROM tbl_cities; END IF根本就不尊重基本的MySQL SELECT statement

您应该从SELECT ......等开始......

答案 1 :(得分:1)

我想你只需要这个:

SELECT * FROM tbl_cities WHERE EXISTS (SELECT * FROM tbl_states)

答案 2 :(得分:0)

可能有帮助:

SELECT * FROM tbl_cities WHERE (SELECT count(1) FROM tbl_states)>0

答案 3 :(得分:0)

SELECT *  FROM test2 where (select count(*) from test) > 0;

在这里,您需要使用CASE来创建条件执行。 试试这个..

CASE WHEN ((SELECT COUNT(id) FROM tbl_states) > 0) THEN
    BEGIN
        UPDATE ...
    END
ELSE
    BEGIN
        INSERT ...
    END
END