我有这个stockmoves表:
id serial op_date from to
23 aaa1 2014-11-10 0 8
24 aaa2 2014-11-10 0 8
25 aaa3 2014-11-10 0 8
26 aaa1 2014-11-18 8 1
27 aaa2 2014-11-15 8 9
28 aaa2 2014-11-19 9 8
29 aaa2 2014-11-20 8 10
(请忽略列名,我将它们缩短为更简洁,只是为了发布在这里,即使它们可能是保留的sql名称。)
我想提取一个独特的连续剧列表,其中包含他们对某个"到"的最新日期。 (产品发送的位置)。如果我这样做:
SELECT serial, MAX(op_date) as max_op_date
FROM stockmoves
WHERE to = 8
GROUP BY serial;
我得到了预期的(好的)答案:
serial max_op_date
aaa1 2014-11-10
aaa2 2014-11-19
aaa3 2014-11-10
但是,如果我在结果中添加"来自"专栏,像这样:
SELECT serial, from, MAX(op_date) as max_op_date
FROM stockmoves
WHERE to = 8
GROUP BY serial;
我对序列号aaa2 imho的答案不正确:
serial from max_op_date
aaa1 0 2014-11-10
aaa2 0 2014-11-19
aaa3 0 2014-11-10
而不是预期的:
serial from max_op_date
aaa1 0 2014-11-10
aaa2 9 2014-11-19
aaa3 0 2014-11-10
我错过了什么或我的旧版MySQL(我被迫使用)有问题吗?不应该与"来自"值是否具有max(op_date)值?
提前谢谢你,
连
修改
好的,以下建议是一个更复杂的陈述,可以满足我的需要:
SELECT sm1.serial, sm1.op_date, sm1.from
FROM stockmoves sm1
JOIN (
SELECT serial, max(id) as max_id
FROM stockmoves
WHERE to = 8
GROUP BY serial
) sm2 ON (sm2.max_id = sm1.id)
谢谢!!!