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個小時,但到目前爲止,我找不到解決方案,所以也許您可以幫助我。
其實一些重構之後,它就像魅力 - 從來沒有想過一個內部的選擇可能是在這種情況下是有用的,但現在它現在似乎合理的選擇我。 :) –