0
我有以下(简化的)三个表:MySQL的选择性GROUP BY,使用最大值
user_reservations:
id | user_id |
1 | 3 |
1 | 3 |
user_kar:
id | user_id | szak_id |
1 | 3 | 1 |
2 | 3 | 2 |
szak:
id | name |
1 | A |
2 | B |
现在我想数一下用'szak'这个名字保留用户,但我希望每个用户只能计算一个szak。在这种情况下,USER_ID有2个“szak”,如果我编写一个查询类似:
SELECT sz.name, COUNT(*) FROM user_reservations r
LEFT JOIN user_kar k ON k.user_id = r.user_id
LEFT JOIN szak s ON r.szak_id = r.id
它将返回两行:
A | 2 |
B | 2 |
但是我想算只有一个每预订szak(可以说只有最高的ID)。我用HAVING试着MAX(k.id),但似乎不起作用。
我想知道在MySQL中是否有支持的方法,或者我应该先选择后端站点上的所有用户ID,然后检查它们的最大值kar.user_id,然后只计算那些,将它们从id列表中删除,计算给定的szak时,然后在后端一起构建数据?
感谢您的帮助 - 我在网上搜索了2个小时,但到目前为止,我找不到解决方案,所以也许您可以帮助我。
其实一些重构之后,它就像魅力 - 从来没有想过一个内部的选择可能是在这种情况下是有用的,但现在它现在似乎合理的选择我。 :) –