我需要将以下三个 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;
更改相关表中的列名称。
关于mysql - 将多个 SQL SELECT 语句合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54020250/