mysql - 将多个 SQL SELECT 语句合并为一个
问题描述
我需要将以下三个 SELECT 语句组合成一个 SQL 语句:
1. SELECT TotalTime FROM Session WHERE device_uid = ${my_uid} ORDER BY StartTime DESC LIMIT 1;
2. SELECT HoursAtService FROM Service WHERE device_uid = ${my_uid} ORDER BY StartTime DESC LIMIT 1;
3. SELECT ServiceHours FROM Type WHERE type_uid = ${my_type_uid};
最好,我想将我的结果作为具有以下字段的单行:
Result:
----------------------------------------------------------------
uid, TotalTime, HoursAtService, ServiceHours
我在想我可能需要做一个内部连接,但我不是 100% 确定如何处理它。就像是:
SELECT uid, TotalTime, HoursAtService, ServiceHours FROM Device AS t1 INNER JOIN (... -> continues
在表之间进行连接很容易,但是如何使用多个 WHERE 子句对各种表进行连接呢?
有人可以告诉我如何构建查询吗?
编辑 - 表模式
Device:
---------------------
device_uid, type_uid, ....
Session:
---------------------
device_uid, session_uid, TotalTime, StartTime, EndTime, SessionTime
Service:
---------------------
device_uid, service_uid, StartTime, EndTime, HoursAtService
Type:
---------------------
type_uid, Name, ServiceHours
解决方案
您可以在一个查询中合并以上单个查询,如下面的 MYSQL 查询:
SELECT Session.uid, Session.TotalTime, Service.HoursAtService, ServiceHours.ServiceHours
FROM Session
JOIN Service ON Service.udi = Session.uid
JOIN ServiceHours ON ServiceHours.type_uid = Session.uid
WHERE Session.uid = ${my_uid}
ORDER BY Session.StartTime DESC LIMIT 1;
更改相关表中的列名。
推荐阅读
- javascript - AngularJS:对作为对象的 ng-options 进行排序
- android - android studio中的日期选择器验证
- mysql - 2天前mysql查询很好,今天超级慢
- typescript - Primeng 日历:从数据库中设置日期
- math - 从经纬度获取SVG定位X和Y
- ios - 如何在 webview 中自动点击按钮以及如何在 webview 中自动填充表单
- java - 安卓空列表
- sql - 如何通过逗号分隔将字符串值插入 SQL Server 表
- angular - 单击同一链接后如何刷新模板中的随机数?
- java - 从 selenium webdriver 写入 json 变量