2015-06-13 80 views
1

我對這個查詢很困惑。我想在一行中獲取一個上下文的所有數據。我真的不知道該怎麼做。這是表格的示例。Mysql在同一行中選擇數據

data (table)        io(table) 
IDData IDIO ReadVal No    IDIO IDContext 
1   io1  12  1    io1  c1  
2   io2  12.5  2    io2  c1 
3   io3  11  3    io3  c1 
4   io4  12.2  1    io4  c2 
5   io5  10  2    io5  c2 
6   io6  10.9  3    io6  c2 

我希望得到這樣的結果

IDContext IO-1 IO-2 IO-3 
    c1   12 12.5 11 
    c2  12.2 10 10.9 

我試圖做到這一點在一個循環中的表格打印和它的作品,但我想這樣做在一個查詢所以它會更快。

其實,我的查詢看起來像這樣:

SELECT IDContext, IDInput, ReadVal 
FROM data 
LEFT JOIN io ON io.IDIO = data.IDIO 
ORDER BY IDContext, No 

這是可能得到這一結果在一個單一的查詢?

回答

1

您可以有條件聚集做到這一點:

SELECT IDContext, 
     MAX(CASE WHEN no = 1 THEN data.ReadVal END) as io1, 
     MAX(CASE WHEN no = 2 THEN data.ReadVal END) as io2, 
     MAX(CASE WHEN no = 3 THEN data.ReadVal END) as io3 
FROM data LEFT JOIN 
    io 
    ON io.IDIO = data.IDIO 
GROUP BY IDContext 
ORDER BY IDContext; 
+0

它的工作原理! Thx爲您的快速答案! :) – sincos