【发布时间】:2011-01-22 17:21:57
【问题描述】:
这是我的数据示例:
CLIENT_ATTRIBUT:
ID_CLIENT | DATE_CLIENT | ATTRIBUT
----------+-------------+---------
000000001 | 2010:03:01 | 0000010
----------+-------------+---------
000000001 | 2010:02:16 | 0000010
----------+-------------+---------
000000001 | 2010:03:04 | 0000011
----------+-------------+---------
000000002 | 2010:03:01 | 0001000
----------+-------------+---------
客户:
ID_CLIENT | NOM_MARITAL |
----------+-------------+
000000001 | PANTROMANI |
----------+-------------+
000000002 | ELLOUQUIER |
----------+-------------+
我想为“CLIENT_ATTRIBUT”表中的每个 ID_CLIENT 获取:
ID_CLIENT、max(DATE_CLIENT) 及其对应的“ATTRIBUT”和“NOM_MARITAL”
所以在上面的例子中:
ID_CLIENT | DATE_CLIENT | ATTRIBUT | NOM_MARITAL |
----------+-------------+----------+-------------+
000000001 | 2010:03:04 | 0000011 | PANTROMANI |
----------+-------------+----------+-------------+
000000002 | 2010:03:01 | 0001000 | ELLOUQUIER |
(我正在使用 Mysql,但我想它与任何数据库系统都不应该如此不同)
【问题讨论】:
-
闻起来像作业,已经在这个网站上回答了无数次。
-
请参阅this similar question 以获得答案。
-
不幸的是这是 MySQL,在 postgresql 中你可以
SELECT DISTINCT ON( id_client ) date_client, attribut, non_marital FROM client_attribut JOIN client USING ( id_client ) ORDER BY date_client DESC。这将比当前的解决方案更快、更清晰。
标签: sql mysql group-by inner-join