如何使用MYSQL

时间:2019-05-12 08:24:55

标签: mysql database

我正在做类似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。

1 个答案:

答案 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