2016-04-09 19 views
0

私はジョインを使用して2つのカラムをフェッチしようとしていますが、以下のクエリはうまくいきます。mysqlストアドプロシージャの2つのカラム値を比較する方法

SELECT 
    failed = L.failed_attempts AS 'FAILED ATTEMPTS', 
    s_value = s.setting_value as 'SETTING VALUE' 
FROM login_t L 
INNER JOIN settings_t S ON S.SETTING_NAME = 'login_attempts' 
WHERE L.login_id = id 
    AND L.failed_attempts > S.setting_value; 

failed_attempts > settings_valueが、その後0にlogin_tis_logged_in列値を更新し、falseを返す場合はそうでないPS

真を返す:あなたのselect文は、オールウェイズretuns場合、私は、MySQLのストアドプロシージャ

+0

引用された別名? –

+0

はい正常に動作します –

+0

このクエリは常に1つの行を返しますか? –

答えて

0

を使用していますちょうど1つの行、選択された値INTOローカル変数を格納することができます、あなたはDECALRE最初にする必要があります。その後、IF .. THEN .. ELSE .. END IF;を使用することができます:何かを返すには、SELECT someValueが必要です。 私は何を比較するべきであるか分からない。しかし、これは、あなたがそれを行うことができる方法である。

DECLARE FAILED_ATTEMPTS INT; 
DECLARE SETTING_VALUE INT; 

SELECT 
    failed = L.failed_attempts, 
    s_value = s.setting_value 
INTO 
    FAILED_ATTEMPTS, 
    SETTING_VALUE 
FROM login_t L 
INNER JOIN settings_t S ON S.SETTING_NAME = 'login_attempts' 
WHERE L.login_id = id 
    AND L.failed_attempts > S.setting_value; 

IF FAILED_ATTEMPTS > SETTING_VALUE 
THEN 
    -- your update statement here 
    SELECT FALSE; 
ELSE 
    SELECT TRUE; 
END IF; 

たぶん、あなたは

SELECT 
    L.failed_attempts, 
    s.setting_value 
INTO 
    FAILED_ATTEMPTS, 
    SETTING_VALUE 

が必要しかし、どういうわけか、私はあなたが2つの選択ステートメント必要があると思います:あなたのクエリは、単一で働いている

SELECT L.failed_attempts, 
INTO FAILED_ATTEMPTS 
FROM login_t L 
WHERE L.login_id = id; 

SELECT s.setting_value 
INTO SETTING_VALUE 
FROM settings_t S 
WHERE S.SETTING_NAME = 'login_attempts'; 
+0

ありがとう、その正常動作 –