【发布时间】:2018-02-19 16:18:31
【问题描述】:
所以我有一个简单的 DB_Schema,USER_INFO 表,列 用户名和全名,用户名是这个表的主键。 我正在建立一个简单的聊天网站。我还有一个 MESSAGES 表,它有 4 列,
- 自动生成的消息 ID - 主键
- SENDER - REFERENCES USER_INFO 表的用户名
- RECEIVER - REFERENCES USER_INFO 表的用户名
- MESSAGE - 发送的消息字符串
我试图使用 INNER JOIN 获取消息、发件人(全名)和收件人(全名)的详细信息,我的 SQL 查询是:
选择消息,发送者,user_info.name 作为发送者,接收者,user_info.name 作为接收者
FROMlets_chat.privatechat
INNER JOIN user_info ON privatechat.sender = user_info.username
INNER JOIN user_info ON privatechat .receiver = user_info.username;
这导致了一个错误:ERROR CODE 1066: Not Unique Table/alias: 'user_info'。
有人可以帮我纠正我的错误或让我得到正确的 SQL 语句来执行此操作?我使用 MYSQL DB。
我擅长 SPRING-HIBERNATE 并且我能够正确地做到这一点,只需要 SQL 的帮助。 提前致谢
更新答案
选择 PVC.message,UI1.name 作为发送者,UI2.name 作为接收者
FROMlets_chat.privatechat AS PVC
内部联接 user_info AS UI1 ON UI1.username = PVC.sender
UI2.username = PVC.receiver 上的 INNER JOIN user_info AS UI2;
这行得通。谢谢@plaidDK
【问题讨论】:
-
您需要为每个表引用添加一个唯一的别名。 IOW、user_info ui1 和 user_info ui2
标签: mysql sql join inner-join