【发布时间】:2017-01-13 18:34:26
【问题描述】:
您好,我想知道是否有办法从与 min 关联的行中获取信息。因此,在下面的示例中,我想简单地获取每个客户的 min(date) 和相关信息。
Cust_id Date information
-----------------------------------------------------
12345 2015-04-03 blue hat
12345 2015-04-05 red scarf
12345 2015-04-02 blue hat
12345 2015-04-08 yellow submarine
54321 2015-04-12 yellow submarine
结果如下所示:
Cust_id Date information
-----------------------------------------------------
12345 2015-04-02 blue hat
54321 2015-04-12 yellow submarine
目前,为了解决这个问题,我会使用临时表或子查询来获取每个客户的 min(date) 并在该日期重新加入表。
SELECT cust_id
, MIN(date)
INTO #TempTable
FROM dataset
GROUP BY cust_id
SELECT cust_id
, date
, information
FROM dataset A INNER JOIN #TempTable B ON A.cust_id = B.cust_id
AND A.date = B.date
这种方法有效,但我想有一种更清洁、更简单的方法可以一次性完成。也许是我不知道的功能?
非常感谢您对此提供任何帮助、建议、示例或资源,
谢谢,
鲍勃
【问题讨论】:
-
是的,在子查询中选择分钟,然后在外部查询中加入主表。这里有很多关于 SO 的主题,如果需要,可以为您提供示例代码。
-
使用临时表或派生表是 MySQL 的最佳选择。其他数据库有更多选择,例如 Postgresql 中的
distinct on或使用窗口函数(在许多数据库中)。