如何关联三张表获取符合特定条件的传感器数据
关联三张表获取目标Sensor数据的SQL实现
核心关联逻辑
通过User表作为中间关联桥梁:
Sensor与User通过共同字段SystemID关联User与Incident通过共同字段EmpID关联
不同数据库的SQL实现示例
MySQL 版本
SELECT s.* FROM Sensor s JOIN User u ON s.SystemID = u.SystemID JOIN Incident i ON u.EmpID = i.EmpID WHERE i.Description LIKE '%System%' AND s.Sensortime = DATE_SUB(i.DateOpened, INTERVAL 4 DAY);
SQL Server 版本
SELECT s.* FROM Sensor s JOIN User u ON s.SystemID = u.SystemID JOIN Incident i ON u.EmpID = i.EmpID WHERE i.Description LIKE '%System%' AND s.Sensortime = DATEADD(DAY, -4, i.DateOpened);
Oracle 版本
SELECT s.* FROM Sensor s JOIN User u ON s.SystemID = u.SystemID JOIN Incident i ON u.EmpID = i.EmpID WHERE i.Description LIKE '%System%' AND s.Sensortime = i.DateOpened - 4;
关键注意事项
- 若日期字段包含时间部分,需先截断时间(比如MySQL用
DATE(s.Sensortime)和DATE(i.DateOpened)),避免时间差异导致匹配失败 LIKE '%System%'默认不区分大小写(部分数据库例外),若需严格区分,可添加对应数据库的大小写敏感设置(如MySQL加BINARY关键字)- 若存在同一
Sensor记录匹配多条Incident的情况,可在SELECT后加DISTINCT去重
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

