mysql - 内部联接?用户 ID 与其他用户 ID 的两个表连接

标签 mysql sql

我在 SQL 语句方面遇到问题。我无法理解 MySQL 中的多表交互。

所以我有 2 个表:

这是我的users表: This is my users table.

这是我的messages表: This is my messages table.

我想要做的是生成一个表格,基本上显示:

如果我是用户 1

丹尼尔 - 墨尔本大学

我只希望在我向他发送消息或从他那里收到消息时显示他的名字。

完全不知道如何做到这一点,有什么想法吗?

非常感谢!

最佳答案

有几种方法。

SELECT
  users.*
FROM
  users
INNER JOIN
(
  SELECT DISTINCT messages_senderid   AS user_id FROM messages WHERE messages_receiverid = 1
  UNION
  SELECT DISTINCT messages_receiverid AS user_id FROM messages WHERE messages_senderid   = 1
)
  contacts
    ON users.users_userid = contacts.user_id

或者也许...

SELECT
  users.*
FROM
  users
WHERE
     EXISTS (SELECT * FROM messages WHERE messages_senderid   = users.users_userid AND messages_receiverid = 1)
  OR EXISTS (SELECT * FROM messages WHERE messages_receiverid = users.users_userid AND messages_senderid   = 1)

关于mysql - 内部联接?用户 ID 与其他用户 ID 的两个表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23406900/

相关文章:

mysql - 如何将表列名作为结果列集中的条目?

java - 关于将数据保存到sql数据库的问题

sql - Oracle - 从 XMLType 中的 XML 序言中提取 XML 版本和编码

sql - 查询以获取总行数和不同行数之间的差异

php - 在 laravel 中合并

MySQL 8 降序复合索引变慢

mysql - 由于内连接,mysql 记录显示两次

java - servlet 的数据库连接问题 - Java webapp

mysql - 检索表连接忽略的项目?

jquery - 将值插入隐藏和数据库问题?