8

我有一个小而简单的 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

4 回答 4

7

如果这是您正在编写的程序,您应该尝试:

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 语句

你应该从SELECT...等开始

于 2012-07-11T07:21:03.290 回答
2

我想你只需要这个:

SELECT * FROM tbl_cities WHERE EXISTS (SELECT * FROM tbl_states)
于 2012-07-11T07:20:46.590 回答
0

可能这有帮助:

SELECT * FROM tbl_cities WHERE (SELECT count(1) FROM tbl_states)>0
于 2012-07-11T07:27:58.517 回答
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
于 2012-07-11T07:33:14.697 回答