简单的SQL查询一次从两个表中选择数据

时间:2017-10-22 14:09:05

标签: mysql nested-queries

我在节点js中有两个用于聊天应用程序的表。

用户

      - id (PK, AI)
      - username
      - useremail
      - userpass

消息

      - mess_id (PK, AI)
      - mess_to (FK - users.id)
      - mess_from (FK - users.id)
      - mess_txt 
      - timestamp

当用户登录时,我想检索那些向当前用户发送消息以及当前用户向谁发送消息的人的USERNAMES。

我到目前为止所尝试的查询是

SELECT username FROM users JOIN messages ON users.id = messages.mess_to OR users.id = messages.mess_from WHERE users.id = 1

  

以上查询返回当前用户的用户名,来自他发送邮件的每个字段或收到邮件,我想要的是获取向其发送邮件的用户的姓名以及从该用户收到邮件的用户的姓名

1 个答案:

答案 0 :(得分:1)

我会使用UNION子查询来获取与当前用户进行对话的用户的ID。然后将其加入users表。

select u.*
from (
    select mess_to as user_id from messages where mess_from = 1
    union
    select mess_from as user_id from messages where mess_to = 1
) sub
join users u on u.id = sub.user_id