MySQL在GROUP BY之前ORDER BY FIELD

时间:2015-01-12 17:24:28

标签: mysql sql sorting

我希望能够按字段id对结果集进行排序,然后在列name上过滤掉重复的值。

给出一个表

+----+------+-------+
| id | name | other |
+----+------+-------+
|  1 |    a |     1 |
|  2 |    a |     0 |
|  3 |    b |     0 |
|  4 |    c |     0 |
+----+------+-------+

我的排序如下:2, 4, 1, 3。 因此,我希望结果看起来像:

+----+------+-------+
| id | name | other |
+----+------+-------+
|  2 |    a |     0 |
|  4 |    c |     0 |
|  3 |    b |     0 |
+----+------+-------+

毕竟,在排序结果集中,id = 2行显示在id = 1行之前,而他们共享name。在这种情况下,只应保留第一个name

简而言之:

SELECT *
FROM table
ORDER BY FIELD(id, 2, 4, 1, 3)
GROUP BY name

不幸的是,无论订单是什么,MySQL都会选择返回哪些行包含一个非唯一的name

我已阅读this solution,但它仅涵盖DESC(和间接ASC)的排序,但不包括FIELD的排序。

如果考虑到排序算法,在某个列重复的情况下,只返回第一行的方法是什么?

0 个答案:

没有答案