Mysql选择同一行中的数据

时间:2015-06-13 03:05:01

标签: 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 个答案:

答案 0 :(得分: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;