首页 > 解决方案 > 从 SQL 中的匹配列连接后仅获取一条记录

问题描述

我有两个如下表。

Table1
Join-Column
Join-Column-value1
Join-Column-value2
Join-Column-value3

Table 2
Join-Column            Other-Column
Join-Column-value1     Other-Column-Value-1
Join-Column-value1     Other-Column-Value-2
Join-Column-value2     Other-Column-Value-3

我想在列上加入 Table1 和 Table2Join-Column并输出Other-Column. 在上面的示例中,Join-Column-value1匹配来自 Table2 的两条记录。我想输出任何一个Other-Column-Value-1Other-Column-Value-2但不能同时输出。Join-Column-value2只匹配 Table2 中的一条记录,所以我也想输出Other-Column-Value-3。基于上述示例的所需输出是:

Other-Column
Other-Column-Value-1
Other-Column-Value-3

我如何在 MySQL 中做到这一点?

标签: mysqlsqljoingroup-by

解决方案


您可以使用聚合:

select t1.join_column, any_value(t2.other_column) other_column
from table1 t1
inner join table2 t2 on t2.join_column = t1.join_column
group by t1.join_column

在 MySQL 中,聚合函数ANY_VALUE()与您似乎想要的很接近——但还有其他确定性的替代方案,例如MIN()or MAX()


推荐阅读