我正在做类似LIME的电动踏板车项目(学校项目),我需要返回某个查询的结果(见下文)
我正在使用MYSQL 5.7.24,并且我已经尝试了100个查询,但没有很好的匹配结果。 我有2个表用于此查询: 行程表,其中包含用户ID,踏板ID和其他行。 重新加载包含userID,scooterID和其他行的表。
我的查询应该返回使用了所有已加载踏板车的用户的列表。
实际的问题是“已经使用了所有踏板车...”。
以下是无法正常查询的示例:
SELECT r.userID
FROM reload r
LEFT JOIN trips v
ON r.useID= v.`userID` AND r.scooterID= v.scooterID WHERE r.`scooterID ` IS NOT NULL
GROUP BY r.userID
示例:
如果用户X使用踏板车A,B并重新加载踏板车A,B。我的查询应该返回用户X的用户ID。
现在,如果用户X使用踏板车A,B并重新加载踏板车A,B,C。我的查询应该不返回用户X的用户ID。
答案 0 :(得分:0)
您需要一个WHERE
子句来代替HAVING
子句:
SELECT r.userID
FROM reload r LEFT JOIN trips v
ON r.userID= v.userID AND r.scooterID = v.scooterID
GROUP BY r.userID
HAVING SUM(v.scooterID IS NULL) = 0
如果null
的列v.scooterID
中有userID
个值,则条件v.scooterID IS NULL
的评估结果为1
,并且该用户将从结果。
参见demo。