mysql - 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_005
、U_001
、C_010
等)获得这两个条件的第一个匹配:((from == value) || (to == value))
从更高的开始ID
。
这意味着,数据可以是“重复的”,但我只想要该组的第一个结果。
例如C_004
和U_015
有两个条目 (C_004 -> U_015
和U_015 -> C_004
)。这应该只返回一个。既然我们要从更高的地方开始Id
,那就意味着它只会返回7 | C_004 | U_015
。
我们举个例子:
- 价值 =
C_005
预期的输出是:
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
)。
解决方案
使用最大值()
select max(id) id,`from`,`to`
from table_name
group by `from`,`to`
推荐阅读
- python - 解析字典中的字典列表以从每个字典中检索特定键的值
- java - 静态变量看不到
- python - 如何使用turtle.gotto打印对称六边形
- android - Kotlin recyclerview on Fragment
- c - 在 C 中为用户输入字符串指定数组大小是否重要?
- javascript - 如何将数据从 .js 传递到 .vue?
- python - Python/Pandas - 从列值重新排列字符串
- spring - 拥有与 REST API 返回的不同的弹簧实体的正确设计是什么?
- .net - 尝试执行 .NET Azure 函数时出现 Azure 存储模拟器错误
- javascript - 如何使用 Jest 测试身份验证标头?