首页 > 解决方案 > 将多个 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

标签: mysqljoin

解决方案


您可以在一个查询中合并以上单个​​查询,如下面的 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; 

更改相关表中的列名。


推荐阅读