2012-01-18 13 views
2

はのは、私は単純なテーブルがあるとしましょう:MySQLの仮想行を再利用

id,name,salary 

私が持っているクエリは次のとおりです。

SELECT id, 
     name, 
     (salary+1) as MS 
FROM test_table 

私は希望のクエリは次のとおりです。

SELECT id, 
     name, 
     (salary+1) as MS, 
     (MS-20) as MS2 
FROM test_table 

それはどのような方法でも可能ですか、私はMSの価値を得る必要があるたびに新しいサブクエリを作る唯一の選択肢ですか?

答えて

1

あなたはユーザー定義変数を使用することができます。

SELECT 
    id, 
    name, 
    @MS1:=(salary+1) as MS1, 
    (@MS1-20) as MS2 
FROM test_table; 

しかし、ユーザ定義の変数を含むクエリは(MySQLのクエリキャッシュでキャッシュすることはできませんあなたが気にする場合)。

+0

ありがとう、これは私が探していたものです。 – user1156093

+0

クール、もう少し速いですが、他の場合は@variable –

0

あなたはこのようにそれを行うことができます。

SELECT id, 
     name, 
     (salary+1) as MS, 
     ((salary+1)-20) as MS2 
FROM test_table 
+0

はい、私の言いたいことは、ちょうどMSだけではなく、給料+ 1を書き直さなければならないということです。 – user1156093