首页 > 解决方案 > MySQL如何选择一组条件的第一个匹配项

问题描述

我有一张这样的桌子:

MyTable
-------------------------------
| ID         | from   | to    |
-------------------------------
| 1          | U_002  | C_005 |
| 2          | U_015  | C_004 |
| 3          | C_005  | U_011 |
| 4          | U_008  | C_001 |
| 5          | U_007  | C_005 |
| 6          | U_001  | C_005 |
| 7          | C_004  | U_015 |
| 8          | U_002  | C_002 |
| 9          | U_001  | C_009 |
| 10         | U_010  | C_005 |
| 11         | C_005  | U_001 |
| 12         | U_004  | C_003 |
| 13         | U_005  | C_005 |
| 14         | U_010  | C_001 |
| 15         | C_005  | U_001 |
-------------------------------

ID, 是表的唯一增量键。

目标是:

这意味着,数据可以是“重复的”,但我只想要该组的第一个结果。

例如C_004U_015有两个条目 (C_004 -> U_015U_015 -> C_004)。这应该只返回一个。既然我们要从更高的地方开始Id,那就意味着它只会返回7 | C_004 | U_015


我们举个例子:

预期的输出是:

15 | C_005 | U_001
13 | U_005 | C_005
10 | U_010 | C_005
 5 | U_007 | C_005
 3 | C_005 | U_011
 1 | U_002 | C_005

这个想法是要获得两个值的“最后一个”(因为我们从更高的开始Id)重合。

正如我所说,两个值可以有多个巧合,但我只想得到“最后一个”(更高Id)。

标签: mysqlsqldatabase

解决方案


使用最大值()

select max(id) id,`from`,`to`
from table_name
group by `from`,`to`

推荐阅读