我一直在嘗試兩天,沒有運氣。SQL左連接:如何從tableB返回最新並由另一個字段分組
我有我的數據庫中以下簡化表:
客戶:
| id | name |
| 1 | andrea |
| 2 | marco |
| 3 | giovanni |
訪問:
| id | name_id | date |
| 1 | 1 | 5000 |
| 2 | 1 | 4000 |
| 3 | 2 | 1500 |
| 4 | 2 | 3000 |
| 5 | 2 | 1000 |
| 6 | 3 | 6000 |
| 7 | 3 | 2000 |
我想所有的名字與他們的最後訪問日期返回。
起初我
SELECT * FROM customers LEFT JOIN access ON customers.id =
access.name_id
只是嘗試,但我得到了7行,而不是3預期。所以I understood I need to use GROUP BY statemet如下所示:
SELECT * FROM customers LEFT JOIN access ON customers.id =
access.name_id GROUP BY customers.id
據我所知,GROUP BY使用隨機行聯合收割機。事實上,我有幾個測試無序的訪問日期。
相反,我需要將每個客戶ID與其對應的最新訪問進行分組!如何做到這一點?
我不確定我是否正確理解您希望在這裏實現的目標,但我留下的印象可能會誤解LEFT JOIN的工作原理。如果您擁有像MAX或MIN這樣的聚合功能,則GROUP BY將起作用。你能更好地解釋你期望看到的輸出是什麼? – Stefano
@decadenza。 。 。 「SELECT *」與「GROUP BY」的使用是一個破碎的問題,它已經在最新版本的MySQL中得到了很好的解決。這不是做你想做的事的正確方法。 –