2012-01-18 28 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 2012-01-18 13:10:56

+0

酷,現在我可以更快的查詢重用如果其他情況下,切換case語句與@變量 – 2017-07-19 07:36:19

0

,你可以做這樣的:

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

是的,這是我的觀點,我必須重寫(工資+ 1),而不是隻使用MS。 – user1156093 2012-01-18 11:59:51