【发布时间】:2013-02-19 03:02:31
【问题描述】:
我有一个表,我试图从中检索每种证券的最新位置:
桌子:
我创建表的查询:SELECT id, security, buy_date FROM positions WHERE client_id = 4
+-------+----------+------------+
| id | security | buy_date |
+-------+----------+------------+
| 26 | PCS | 2012-02-08 |
| 27 | PCS | 2013-01-19 |
| 28 | RDN | 2012-04-17 |
| 29 | RDN | 2012-05-19 |
| 30 | RDN | 2012-08-18 |
| 31 | RDN | 2012-09-19 |
| 32 | HK | 2012-09-25 |
| 33 | HK | 2012-11-13 |
| 34 | HK | 2013-01-19 |
| 35 | SGI | 2013-01-17 |
| 36 | SGI | 2013-02-16 |
| 18084 | KERX | 2013-02-20 |
| 18249 | KERX | 0000-00-00 |
+-------+----------+------------+
我一直在搞乱基于this page 的查询版本,但我似乎无法得到我正在寻找的结果。
这是我一直在尝试的:
SELECT t1.id, t1.security, t1.buy_date
FROM positions t1
WHERE buy_date = (SELECT MAX(t2.buy_date)
FROM positions t2
WHERE t1.security = t2.security)
但这只是返回我:
+-------+----------+------------+
| id | security | buy_date |
+-------+----------+------------+
| 27 | PCS | 2013-01-19 |
+-------+----------+------------+
我正在尝试获取每种证券的最大/最晚购买日期,因此结果中每一种证券的购买日期都是最近的一行。非常感谢任何帮助。
编辑:位置的 id 必须与最大购买日期一起返回。
【问题讨论】:
-
@Hogan 可能是这样。我已经有一段时间没有这样的要求了,你的当然要正确得多。
-
请使用您在 cmets 中提供的所有详细信息编辑问题。这样会更清楚一点。