我正在尝试准备一个查询,而且我很难用它。我需要一些MySQL大师来帮忙...
以下表为例......
CREATE TABLE
order_revision
(
id
int(11) NOT NULL,
parent_order_id
int(11) NOT NULL,
user_id
int(11) DEFAULT NULL,
sub_total
decimal(19,4) NOT NULL DEFAULT '0.0000',
tax_total
decimal(19,4) NOT NULL DEFAULT '0.0000',
status
smallint(6) NOT NULL DEFAULT '1',
created_at
int(11) NOT NULL,
updated_at
int(11) DEFAULT NULL
)
我需要一个查询来选择所有唯一的' parent_order_id'使用max' updated_at'值。此查询应返回具有唯一' parent_order_id的所有行,具体取决于< updated_at'的最大时间戳。柱。
换句话说,返回的每一行都应该有一个唯一的' parent_order_id'并且是< updated_at'的最大时间戳。列。
基本上这个查询会找到最新的"订单修订版"对于每个"父订单"
答案 0 :(得分:1)
你的意思是:
SELECT parent_order_id,max(updated_at) FROM order_revision GROUP BY parent_order_id
对于MySQL,GROUP BY
- 子句甚至不是必需的,但我会将其包含在内以便澄清(大多数其他符合SQL的服务器都需要它)。
答案 1 :(得分:1)
对于任何有兴趣的人来说,这个问题原来是我正在寻找的......
SELECT main.*
FROM order_revision AS main
WHERE main.id = (
SELECT sub.id
FROM order_revision AS sub
WHERE main.parent_order_id = sub.parent_order_id
ORDER BY sub.updated_at DESC
LIMIT 1
);