我对这个查询真的很困惑。我想在一行中获取一个上下文的所有数据。我真的不知道该怎么做。这是表格的示例。
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
是否可以在一次查询中获得该结果?
最佳答案
您可以使用条件聚合来做到这一点:
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;
关于Mysql选择同一行的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30814669/