gpt4 book ai didi

MySQL 在一次选择中返回多行值

转载 作者:行者123 更新时间:2023-11-29 14:15:46 25 4
gpt4 key购买 nike

我正在尝试从我的数据库中准备一份报告。

我有 2 个表,如下所示:

device          sensor
id | name id | devid | value
====|===== ====|=======|========
1 | dev1 1 | 1 | 1.1
2 | dev2 2 | 1 | 1.2
3 | 2 | 2.1
4 | 2 | 2.2

我想得到这样的返回:

 id | name  | val_rc    | val_cf
====|=======|===========|==========
1 | dev1 | 1.1 | 1.2
2 | dev2 | 2.1 | 2.2

我正在使用 for 语句将所有值放入我的报告中。 header 名称并不重要。

我尝试了此 SQL 查询的不同排列:

SELECT device.id, device.name, sensor.value AS val_rc, sensor.value AS val_cf
FROM device
JOIN sensor
ON sensor.devid = device.id;

最佳答案

您没有提供有关如何决定每列中包含哪个值的详细信息,因此本示例使用 row_number:

select id,
name,
max(case when GROUP_ROW_NUMBER = 1 then value end) as val_rc,
max(case when GROUP_ROW_NUMBER = 2 then value end) as val_cf
from
(
select d.id, devid, name, value,
@num := if(@NAME = `NAME`, @num + 1, 1) as group_row_number,
@NAME := `NAME` as dummy
FROM device d
INNER JOIN sensor s
ON s.devid = d.id
order by name, value
) x
group by id, name

参见SQL Fiddle with Demo

关于MySQL 在一次选择中返回多行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12716103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com