mysql - Mysql转换成单选查询
问题描述
我有以下数据库(有更多行):
有些日期和时间我可能只有Temperature
, 或x-Axis Vibration
, 或任何字段。一些时间戳(如这张图片中的时间戳)缺少如下字段Z-Axis Vibration
我想以以下格式获取所有这些数据并将找不到的字段转换为“NA”
我尝试了以下查询:
select entry_date, entry_time, field_name, ifnull(value, "NA") as value
from tablename
where group_name = "SL1-DSM-1" and
concat(entry_date, " ", entry_time) in
( select distinct(concat(entry_date, " ", entry_time))
from tablename
where timestamp(entry_date, entry_time) between "2019-07-22 00:00:00" and
"2019-07-23 00:00:00" ) and
field_name in (select distinct(field_name) from tablename where group_name =
"SL1-DSM-1");
这给了我结果:
有没有一种方法可以使用单个查询来实现?或者至少没有。查询,以使其更快。
注意:目前,我对每个组和字段使用不同的查询,并将它们编译成通用格式,但我想这是否可以返回我的 MySQL 本身
解决方案
您可以使用生成所有行cross join
,然后填写缺失值。 'N/A'
不好填,因为是字符串。只需使用NULL
.
像这样的东西:
select entry_date, entry_time, group_name, field_name,
t.value
from (select distinct entry_date, entry_time, group_name
from tablename
) dtg cross join
(select distinct field_name
from tablename
) f left join
tablename t
using (entry_date, entry_time, group_name, field_name)
推荐阅读
- build - Artifactory 可以根据构建时间而不是版本号来保留构建吗?
- javascript - Django 表单不显示日期小部件
- c# - WPF 中的绑定验证
- php - 快速以纵向模式拍摄照片并上传到服务器 - 上传的图像显示方向错误
- javascript - 接收请求标头错误 - AJAX/JavaScript
- c - 如何在窗口 mingw 中使用 CoreFoundation.dll 编译我的程序
- c# - C# WinForm DataGridView 标头
- java - 单击按钮时删除 EditView
- php - 如何向 Ajax 请求发送 PHP 可调用函数响应?
- sass - 编写 Sass 时括号编辑器中的功能