我有以下 MySQL 表:
[orders]
===
order_id BIGINT UNSIGNED AUTO INCREMENT (primary key)
order_ref_id VARCHAR(36) NOT NULL,
order_version BIGINT NOT NULL,
order_name VARCHAR(100) NOT NULL
...
lots of other fields
订单是“版本化的”,这意味着多个订单可以具有相同的相同order_ref_id
但会有不同的版本(版本 0、版本 1、版本 2 等)。
我想编写一个查询,根据订单order_ref_id
及其MAX
版本返回订单的所有订单字段,如下所示:
SELECT
*
FROM
orders
WHERE
order_ref_id = '12345'
AND
MAX(order_version)
换句话说:给定org_ref_id
,给我具有最高版本号的单个orders
记录。因此,如果表中存在以下行:
order_id | order_ref_id |. order_version | order_name
======================================================================
1 | 12345 | 0 | "Hello"
2 | 12345 | 1 | "Goodbye"
3 | 12345 | 2 | "Wazzup"
我想要一个将返回的查询:
3 | 12345 | 2 | "Wazzup"
但是,上述查询无效,并产生:
ERROR 1111 (HY000): Invalid use of group function
我知道典型的MAX()
例子会让我写出类似的东西:
SELECT
MAX(order_version)
FROM
orders
WHERE
order_ref_id = '12345';
但这只是给了我order_version
,而不是所有 ( *
) 字段。任何人都可以在这里帮助我越过终点线吗?