我想从两个表中选择数据:用户和租金。每个用户可能有很多的租金,我想得到所有的用户,即使是那些零租金的用户。诀窍是,我也想要一个用户的所有租金,这似乎是干扰的结果。有了如下所示的查询,我只得到以租金作为结果的用户,不包括没有租金的用户。通过额外的过滤,在某些情况下,我得到的结果都是空值。我怎样才能在不弄糟结果的情况下把总数包括在内呢?
SELECT u.*, r.*, SUM(r.rental_id) AS totalRentals, (SELECT rented From rentals WHERE rentals.rental_id = u.user_id ORDER BY rented DESC LIMIT 1) as lastRental FROM users u LEFT JOIN rentals r on u.user_id = r.user_id ORDER BY u.surname DESC
发布于 2022-07-12 10:52:54
显然,最简单的解决方案是将结果按users.user_id分组,它正确地返回所有用户,包括SUM列返回零的用户:
SELECT u.*, r.*, SUM(r.rental_id) AS totalRentals, (SELECT rented From rentals WHERE rentals.rental_id = u.user_id ORDER BY rented DESC LIMIT 1) as lastRental FROM users u LEFT JOIN rentals r on u.user_id = r.user_id GROUP BY u.user_id
我真的很感激被抓到,这正是我来这里的原因。
https://stackoverflow.com/questions/72950970
复制相似问题