mysql - 两个表之间的多列连接

标签 mysql sql join

我想知道是否可以在两个表之间但在不同的列上进行联接?让我解释一下,因为这与我见过的大多数案例不同......

我有一个表,用于记录用户之间的所有消息,每个用户都有一个唯一的用户 ID。所以在第一个表中我有:

Tx User Id .......... Rx. User Id .......... Date ............ Message

在用户表中我有

user Id .............. User name

我可以有一个连接查询来给我

Tx User "Name" ........... Rx. User "Name: ....... Date ....... Message

问题是在我的连接中显然我只能定义

SELECT messages.* users.name
FROM messages JOIN
     users
     ON messages.RxId = users.id OR messages.TxId = users.id

这只有 1 个字段,但正如我上面所解释的,我需要 2 个字段作为 Rx 用户名和 Tx。用户名基于我的消息表中的 ID 进行匹配。

非常感谢。

最佳答案

您需要两个联接。为此,您需要了解表别名(一件好事):

SELECT m.*, urx.name, utx.name
FROM messages m LEFT JOIN
     users urx
     ON m.RxId = urs.id LEFT JOIN
     users utx
     ON m.TxId = utx.id;

关于mysql - 两个表之间的多列连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48470743/

相关文章:

SQL Server : removing duplicate column while joining tables

php - PHP 中的元音编码错误

sql - 限制 LEFT JOIN

Mysql - 如果第一个条件为 TRUE,则运行下一个 AND 条件

java - sql中删除的困惑

mysql - 是否可以通过第三个表将一个表中的所有字段与其他表中的所有字段进行匹配?

sql-server - 基于所有 "Key/Value"对完全匹配的内部连接两个表

mysql - Ruby on Rails 将 CSV 导入 MySQL

c# - 如何使用带有连接字符串的 MySQL EF 6

mysql - PHPExcel:为什么这不起作用?数据未填充