2012-04-28 28 views
0

私はこのSQLなぜこのIF THEN SQL文はエラーを返しますか?

SELECT * 
FROM post 
    IF 1 = 1 THEN RIGHT JOIN faves ON faves.post_id_fk = post_id; // <== error 
END IF; 
WHERE post_author_id 
     LIKE 1 
ORDER BY post_timestamp DESC 
LIMIT 0, 10 

に条件付きright joinを実行するには、これを行うのより良い/正しい方法はありますか?

答えて

2

あなたの状態はどこから生じましたか?そのレベルであなたのクエリに参加配置するかどうかを判断できない理由

  1. それはSQLの外から来る場合、:

    $qry = "SELECT * FROM post " . ($test ? " RIGHT JOIN ... " : "") . "..."; 
    
  2. そうでない場合、それはSQLの中にテストされなければならない場合には、私は離れて別の文を分離したい:

    DELIMITER ;; 
    
    IF @test THEN 
        SELECT * FROM post RIGHT JOIN ... ; 
    ELSE 
        SELECT * FROM post ... ; 
    END IF;; 
    
    DELIMITER ; 
    
+0

おかげでeggyal - ソリューション1は、私が探していたものでした – pepe

関連する問題