从查询中排除部分重复项
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
以将数字舍入为整数以进行适当分组。
我需要从我的查询 (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
以将数字舍入为整数以进行适当分组。