【发布时间】:2017-02-02 07:08:22
【问题描述】:
我想修改以下查询以删除子查询并改为使用 JOIN 构造
SELECT COUNT(locationid) FROM Passages WHERE PassageTime <= 1485924396
AND LicenceTag NOT IN (SELECT LicenceTag FROM participant_licencetag WHERE FROM_UNIXTIME(passagetime) BETWEEN from_datetime AND to_datetime)
AND LocationId NOT IN (SELECT LocationId FROM imagefetchrequests WHERE passagetime BETWEEN StartTime AND EndTime);
以下是我使用 JOIN 创建的查询,但结果与初始查询的结果无法比较
SELECT COUNT(p.locationid) FROM Passages p
LEFT JOIN participant_licencetag pl ON p.LicenceTag = pl.LicenceTag
LEFT JOIN imagefetchrequests ifr ON p.LocationId = ifr.LocationId
WHERE p.PassageTime <= 1485924396
AND pl.LicenceTag IS NULL AND ifr.LocationId IS NULL
AND FROM_UNIXTIME(p.passagetime) BETWEEN pl.from_datetime AND pl.to_datetime
AND p.passagetime BETWEEN ifr.StartTime AND ifr.EndTime;
可能出了什么问题?
【问题讨论】:
标签: mysql join subquery left-join