从查询中排除部分重复项

Exclude partial duplicates from query

我需要从我的查询 (MariaDB 5.5.68) 中排除部分重复项,例如:

SELECT num, returned FROM table WHERE returned = 1;

num(VARCHAR) returned
29.0 1
27.0 1
22.0 1
22.1 1
21.0 1

在这个例子中我需要排除 22.0 并且只保留 22.1

我尝试将 num 行转换为 DOUBLE 并调用 MAX() 但我认为我需要将其作为子查询来执行,但我无法使其正常工作。

您可以使用聚合来实现:

SELECT max(cast(num as decimal(4,2))), returned
FROM table
WHERE returned = 1
GROUP BY cast(num as int), returned

在 SELECT 子句中,我们将 for 转换为十进制,以便 max() 将 return 数字最大值而不是字典序最大值。在 GROUP BY 子句中,我们强制转换为 int 以将数字舍入为整数以进行适当分组。