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

クエリでBEGINあり、ENDここでは何もする必要がない場合。

編集

まあ、言うことは本当にこれ以上ありません、IF ((SELECT COUNT(id) FROM tbl_states) > 0) THEN SELECT * FROM tbl_cities; END IF単に基本的なMySQLSELECTステートメントを尊重していません。

あなたは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 に答える