mysql php 查询 CASE 根据第一个表中的列选择第二个表中的列


mysql php query CASE selecting columns in second table based on columns in first table

我有两个表

表1 - 定义存在的传感器的表

serialN  |  sensor1  |  sensor2  | 
122      |    1      |    1      |
123      |    1      |    0      |

表2 - 包含实际传感器数据的表格。

serialN  |  sensor1  |  sensor2  | 
123      |    23     |    -0.0F  |
123      |    22     |    -0.0F  |
122      |    19     |    -0.0F  |
123      |    33     |    -0.0F  |
122      |    26     |    -0.0F  |
123      |    24     |    -0.0F  |

如何执行 PHP mysql 查询以获得仅当表2中的那些列对应的对应部分为1时才选择表2中那些列的结果 对于给定的序列号N

所以如果我想要 serialN=123 的数据,我的结果应该是

serialN  |  sensor1  |
123      |    23     |
123      |    22     |
123      |    33     |
123      |    24     |

Mysql的case语句支持你(http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#operator_case)。 PHP 的诡计是不必要的:

select 
case when t1.sensor1=1 then t2.sensor1 when t1.sensor2=1 then t2.sensor2 end
from table1 t1
inner join table2 t2 on t1.serialN = t2.serialN

看看这是否符合您的需求:

SELECT CASE WHEN t1.sensor1 = 1 THEN t2.sensor1 ELSE null END AS 'SENSOR1',
       CASE WHEN t1.sensor2 = 1 THEN t2.sensor2 ELSE null END AS 'SENSOR2'
FROM table2 t2
INNER JOIN table1 T1 ON t1.serialN = t2.serialN

SQLfiddle 演示