mysql - 加入不同的表并用mysql在一行上显示匹配记录

标签 mysql sql

我目前正在处理两个需要某种联接的表。第一个表称为 profile 表,另一个称为 matches

配置文件表

+------------+------+--------+
|  ID | Name |  Bal   |
+------------+------+--------+
|1    |Daniel|  2000  |
+------------+------+--------+
|2    |Frank |  2000  |
+------------+------+--------+ 
|3    |Sarah |  2001  |
+------------+------+--------+ 

匹配表

+------------+------+--------+
|  ID | User_ID |  Match_ID|
+------------+------+--------+
|1    |  1      |  2  |
+------------+------+--------+
|2    |1        |  3  |
+------------+------+--------+ 
|3    |3        |  1  |
+------------+------+--------+ 

上面是示例表,现在我该如何编写一个查询,将 User_ID 和 Match_ID 字段的两个名称都显示在一行中

查询后的预期结果

+------------+------+--------+
|  ID | Name    | Match Name|
+------------+------+--------+
|1    |  Daniel |  Frank  |
+------------+------+--------+
|2    |Daniel   |  Sarah  |
+------------+------+--------+ 
|3    |Sarah    |  Daniel  |
+------------+------+--------+

最佳答案

您只需使用两个连接:

select m.*, pu.name, pm.name as match_name
from matching m left join
     profiles pu
     on m.user_id = pu.id left join
     profiles pm
     on m.match_id = pm.id;

请注意,这使用了 left join。这可确保 matching 中的所有行都在结果集中,即使其中一列没有值。

关于mysql - 加入不同的表并用mysql在一行上显示匹配记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49752769/

相关文章:

mysql - 从 Excel 工作表导入数据库表

sql - 从 mysql 数据库中检索数据哪个更快?

php - 将大数据文件导入 MysQL 的最佳方式

sql - 对 2 个相互依赖的表进行复杂的 SQL 更新

javascript - 序列化 WHERE NOT EXISTS()

sql - 按 PostgresQL 分组

mysql - 如何在select中设置执行时间限制,但最后返回结果

mysql - 不同列的 SQL 求和

mysql - 根据日期更新某些列。解决这个问题的最佳方法

java - 如果 "Statement"语句更优,为什么需要 "prepared"对象?