1

簡単な質問のように感じますが、正しく理解できないようです。通常の IF ... THEN ... ロジックを実行しようとしていますが、うまくいかないようです:

set @var:=2;
if @var=1 THEN select 'hello';

私は得る:

エラー 1064 (42000):

SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

私は何が欠けていますか?

4

2 に答える 2

2

代わりにCASEを使用できます。

SET @var:=2; 
SELECT CASE WHEN @var=1 THEN 'hello' ELSE 'no hello' END;
--prints 'no hello'

SET @var:=2; 
SELECT CASE WHEN @var:=1 THEN 'hello' ELSE 'no hello' END;
--prints 'hello'

上記の例でアイデアが明確になることを願っています。

編集:select OPの追加の懸念に対処するには、ステートメントにs を組み込むことができcaseますが、括弧で囲む必要があります。たとえば。

SET @var:=2; 
SELECT CASE WHEN @var:=1 THEN (select 'hello') ELSE (select 'no hello') END;

注意すべきことの 1 つは、(1 つの行と 1 つの列から) 1 つの値のみを返す必要があることです。

于 2012-11-12T10:29:51.627 に答える
0

次のように、関数、プロシージャ、およびトリガー内でのみ可能です。

DELIMITER //
DROP PROCEDURE IF EXISTS anyname//
CREATE PROCEDURE anyname()
BEGIN
    IF @var1 = 1 THEN
        SELECT 'hello';
    END IF;
END//
SET @var1 := 1;
CALL anyname()//
于 2012-11-12T15:11:38.787 に答える