我一直在尝试两天,没有运气。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中得到了很好的解决。这不是做你想做的事的正确方法。 –