2016-06-20 16 views
0

mySQLスクリプトファイルを作成しようとしているので、別のデータベースで簡単に変更を実行できますが、IF文に問題があります。 (私はMySQL Workbenchを使用しています)。MySQLでIF文を使用するとエラーが発生する

CREATE TABLE IF NOT EXISTS `build` (
    `ID` int(11) NOT NULL AUTO_INCREMENT, 
    `Version` varchar(20) NOT NULL, 
    `Date` datetime DEFAULT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

IF EXISTS(select 1 from build where Versao = '1.1') THEN select "yes"; 

CREATE TABLE文は正しく実行されるが、文は次のエラーを与えている「(存在する場合...選択」:

構文エラーを:で有効な入力ではありません)もし(IF 「はい」を選択コマンドは、実際にINSERTコマンドに置き換えられます。私は、IFコマンドが動作するかどうかをテストしようとしている。この位置

私もIFを置くことを試みたが(EXISTS区切られたクエリで行を選択しても、結果は同じです。

私は間違っていますか?

答えて

1

あなたが使いたいと思っているSQL IF関数は、決して宣言していない関数の中で使うべきです。あなたが期待するように動作するスタンドアロンの問合せをしたい場合は

、その後、あなたはこれを試すことができます。

SELECT CASE WHEN EXISTS (SELECT 1 FROM build WHERE Versao = '1.1') 
      THEN "yes" 
      ELSE "no" 
     END 
LIMIT 1 
0

SQL関数は、唯一の文の中またはストアドプロシージャ/ルーチン内で使用することができます。

このSELECT文はあなたのために働く必要があります。

SELECT IF(EXISTS(SELECT 1 FROM build WHERE Versao = '1.1'), 'yes', 'no') AS test; 
+0

問題は、私はyesまたはno返すようにしたくないということです。それはただのテストだった。私が望むのは、既存のテーブルに応じて1つ以上のコマンドを実行することです。 – Marlon

+0

OK。条件付きで実行したいコマンドの例を挙げてください。それらはSQLにありますか? –

関連する問題