2016-07-19 2 views
0

と:明らかにこれだけdoesntの仕事MySQLのクエリIF条件は、MySQLのコマンドテキスト内で、例えばIFシンプルで何イムやろうとして複数のステートメント

SET @var1=(SELECT ID 
      FROM table_a 
      WHERE [email protected]_Parameter 
      ORDER BY ID ASC LIMIT 1); 

IF @var1 IS NOT NULL THEN 
BEGIN 
    DELETE FROM table_b 
    WHERE [email protected]; 

    UPDATE table_c 
    SET [email protected] 
    WHERE [email protected]_Parameter; 
END IF; 

、それは私が内部sintaxエラーを持っていると文句を言い私のクエリは、検索することができますive検索されたGoogleとこの特定のケース内のIFを使用する方法を見つけた、任意の助けに感謝します。

よろしく、 オイゲン

+0

MySQLでは、ストアドプロシージャ、関数、トリガのコードブロックでのみ、 'IF'句を使用できます。 –

+0

'C#'で解決したいのであれば、おそらく 'C#チュートリアル付きデータベース 'をチェックする必要があります。 MySQLの場合は、ストアプロシージャを記述します。 –

+0

あなたが言っていることは、私が命令文でこれを行う方法がないということですか?私はストアドプロシージャや関数やトリガを作成したくはありません。私の場合はそのコードが適切な場所に置かれます。 –

答えて

0

私はあなたがすべてでIFを必要としないと思います。

すべてのレコード( null = nulltrueではありません)を削除しません
DELETE FROM table_b 
WHERE ID = NULL 

@var1がnullの場合、あなたのDELETE文では、と評価されます。 いつでも追加することができます。この場合は不要です

AND @var1 IS NOT NULL;

が、他のケースではそれが必要とされる、以下の更新ステートメントのように。それはコードの機能に明確化を加えるので、とにかく追加するのが良いかもしれません。

あなたはあなたに更新クエリを変更することができます:あなたはifを削除し、あなたが要求した機能を得ることができます。この変更により

UPDATE table_c 
SET [email protected] 
WHERE [email protected]_Parameter 
    AND @var1 IS NOT NULL; 

+0

実際にデータ行ではなくテンプレート行としてプログラムによって処理されるID参照のない行が存在するため、一部の行が削除されます。そのようにすれば、実際には私のために行くことはありません IFのようなものが私の場合には本当に必要です –

+0

'と@ var1 is not null'を' where'節に追加することができます。しかし、それは必要ではありません。値が ''ヌル '' =ヌル ''はまだ ''ヌル ''をチェックする正しい方法は ''ヌル ''であると評価されます。等価演算子 '='は 'null 'でそのようには動作しません – HoneyBadger

+0

解答としてあなたのコメントを投稿してください。私はそれを選択することができます。私はコマンド文にIFがあることを期待していましたが、 @ var1はnullではありません "すべてのサブコマンドに貼り付けられた唯一の実行可能なオプションです。 –

関連する問題