带“的SQL请求”;分组方式;及;“最大值”;及;加入;?
以下是我的数据示例: 客户属性:带“的SQL请求”;分组方式;及;“最大值”;及;加入;?,sql,mysql,group-by,inner-join,Sql,Mysql,Group By,Inner Join,以下是我的数据示例: 客户属性: ID_CLIENT | DATE_CLIENT | ATTRIBUT ----------+-------------+--------- 000000001 | 2010:03:01 | 0000010 ----------+-------------+--------- 000000001 | 2010:02:16 | 0000010 ----------+-------------+--------- 000000001 | 2010:03:04 |
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\u attribute”中的每个ID\u客户机,我希望得到:
ID_CLIENT,max(DATE_CLIENT)及其相应的“attribute”和“NOM_”
在上面的例子中:
ID_CLIENT | DATE_CLIENT | ATTRIBUT | NOM_MARITAL |
----------+-------------+----------+-------------+
000000001 | 2010:03:04 | 0000011 | PANTROMANI |
----------+-------------+----------+-------------+
000000002 | 2010:03:01 | 0001000 | ELLOUQUIER |
(我正在使用Mysql,但我想它与任何数据库系统都不会有太大的不同)您应该能够使用如下子查询:
SELECT
client.id_client,
sub_query.date_client,
client_attribut.attribut,
client.nom_marital
FROM
client
INNER JOIN
(SELECT
client_attribut.id_client,
MAX(client_attribut.date_client) as date_client
FROM
client_attribut
GROUP BY
client_attribut.id_client)
AS sub_query ON (sub_query.id_client = client.id_client)
INNER JOIN
client_attribut ON (client_attribut.id_client = sub_query.id_client AND
client_attribut.date_client = sub_query.date_client);
闻起来像是家庭作业,已经在这个网站上回答了很多次。请参阅以获取答案。不幸的是,这是MySQL,在postgresql中,您可以
选择DISTINCT on(id\u client)date\u client,attribute,non\u-mousive FROM client\u attribute使用(id\u client)ORDER BY date\u client DESC加入客户端。这将比当前的解决方案更快更清晰。看起来此解决方案没有给出正确的“attribute”值:在上面的示例中,对于ID_CLIENT=“00000000 1”@dangolive:我的错,它将给出“0000010”而不是“0000011”!现在修好了。非常感谢,现在可以了!对我来说还是有点复杂,我会仔细研究:)