mysql - 从 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-1
,Other-Column-Value-2
但不能同时输出。Join-Column-value2
只匹配 Table2 中的一条记录,所以我也想输出Other-Column-Value-3
。基于上述示例的所需输出是:
Other-Column
Other-Column-Value-1
Other-Column-Value-3
我如何在 MySQL 中做到这一点?
解决方案
您可以使用聚合:
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()
。
推荐阅读
- excel - 如果内容与另一列的内容匹配,则希望遍历 excel 中的列并突出显示填充每个单元格
- node.js - 如何使用 kafka-node 将 AWS Bitnami 认证的 Kafka AMI 与 Elastic Beanstalk nodejs 环境连接
- react-data-grid - 简单排序示例
- javascript - 我正在尝试将 db 值导出到全局范围,以便可以在其他模块中使用
- vba - 如何按主题和年龄过滤?
- gcc - 使用我自己的静态/动态库:如何编译和链接(正确做事的正确方法)
- javascript - 控制器中的 removeEventListener
- perl - 如何在 activeperl 中安装包模块(手动)
- ios - 是否可以通过在 iOS 上通过企业分发分发应用程序来测试应用内订阅真实?
- java - 如何使用 iText 将签名附加到 pdf?