【发布时间】:2013-02-16 07:30:12
【问题描述】:
首先,我使用的是 MySQL 4.0.27,需要解决此问题 仅限版本。
我在 SELECT 语句中使用 MAX() 与其他字段,需要检索与 MAX 字段的值对应的其他字段的值。
假设表订单中的数据如下:
-------------------------------------------------- ------------ 产品 |类别ID |日期 |排序依据 -------------------------------------------------- ------------ 电视 | 1 | 2011-11-27 |约翰 笔 | 1 | 2011-11-29 |大卫 鼠标 | 2 | 2011-11-30 |麦克风 打印机 | 1 | 2011-10-19 |肉酱 硬盘 | 2 | 2011-11-02 |彼得 -------------------------------------------------- --------------我的要求是检索每个类别中的订单数量以及最近订单的个人名称,这意味着我需要以下结果:
-------------------------------------------------- ---------------------- 类别ID |订购方式 |订单计数 |日期 -------------------------------------------------- ---------------------- 1 |约翰 | 3 | 2011-11-29 2 |彼得 | 2 | 2011-11-30如果我使用下面的 SQL:
SELECT CategoryID, OrderBy, COUNT(OrderID) AS Order_count, MAX(Date)
FROM Orders
GROUP BY CategoryID
我没有得到想要的结果。我在 OrderBy 中得到了一些其他名称,而不是与提取日期相同的名称。
任何人都可以建议如何在 MySQL 4.0.x 中实现这一点,我们有限制不使用内部查询或像 GROUP_CONCAT 这样的函数。
提前致谢。
【问题讨论】:
-
只是为了确定,对于第 1 类,名字不是大卫吗?对于第 2 类,不会是迈克吗?他们是日期最近的人!
-
顺便说一句,John 既不是最新的也不是最年长的……你为什么指望 John 在那儿?
-
我很抱歉;你是对的,结果应该是 Cat 1 的 David 和 Cat 2 的 Mile;但我没有得到这个。