mysql - 将多个 SQL SELECT 语句合并为一个

标签 mysql join

我需要将以下三个 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/

相关文章:

MySQL 左连接

MySQL Slow join - 但并非总是如此,也不是在所有表上

mysql - 这两个 SQL 查询之间的区别

c# - Dapper 在 Mono 上工作吗?

mysql - phpmyadmin 不能正确显示非英文字符

MySQL 总和更新

mysql - 不是那么简单的 SQL 查询

java - 为什么我的表没有被填充?

MYSQL 下一条 上一条 记录

javascript - 如何将js鼠标坐标获取到php插入查询中?