首页 > 解决方案 > 如何使用MYSQL返回与用户关联的所有对象也都在另一个表中

问题描述

我正在做一个像 LIME 这样的电动滑板车项目(学校项目),我需要返回某个查询的结果(见下文)

我正在使用 MYSQL 5.7.24,并且我已经尝试了一百个没有很好匹配结果的查询。我有 2 个用于此查询的表:包含 userID、scooterID 和其他行的 Trips 表。重新加载包含 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。

标签: mysqldatabase

解决方案


而不是一个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

如果anull列中有值,则条件将评估为并且该用户将被排除在结果之外。请参阅演示v.scooterIDuserIDv.scooterID IS NULL1


推荐阅读