2011-01-30 23 views
2

我搜索了一段時間並找不到解決問題的答案。我有一個表,看起來像這樣:使用不同的值作爲列創建MySQL視圖

date  name status 
2011-01-01 m1 online 
2011-01-01 m2 offline 
2011-01-01 m3 online 
2011-01-02 m1 offline 
2011-01-02 m2 offline 
2011-01-02 m3 online 

我想創建一個視圖,將如下所示:

date   m1  m2  m3 
2011-01-01 online offline online 
2011-01-02 offline offline online 

凡根據「名稱」列中的值是不同的,並且具有固定值的數量,比如20個不同的值(m1 ... m20),但可以隨着時間的推移而增加。是否有可能創建一個這樣的視圖?如果是的話,怎麼樣?

非常感謝。

回答

3

結果集列的變量數量通常是一個壞主意,但是如果你真的想這樣做,那麼你可以使用的GROUP BYMAXIF組合:

CREATE VIEW yourview AS 
SELECT 
    date, 
    MAX(IF(name = 'm1', status, NULL)) m1, 
    MAX(IF(name = 'm2', status, NULL)) m2, 
    MAX(IF(name = 'm3', status, NULL)) m3 
FROM yourtable 
GROUP BY date; 

視圖會給你這個數據,你想:

 
date  m1  m2  m3  
2011-01-01 online offline online 
2011-01-02 offline offline online 

請注意,這是不可能創造與列的可變數量的視圖,所以你將不得不重新創建在v每當列數發生變化時查看。

+0

感謝您的指點。 – kelly 2011-01-30 10:23:15

相關問題