Mysql 一次从两个表中选择数据的简单SQL查询
我在NodeJS中有两个用于聊天应用程序的表 表用户:Mysql 一次从两个表中选择数据的简单SQL查询,mysql,nested-queries,Mysql,Nested Queries,我在NodeJS中有两个用于聊天应用程序的表 表用户: - id (PK, AI) - username - useremail - userpass - mess_id (PK, AI) - mess_to (FK - users.id) - mess_from (FK - users.id) - mess_txt - timestamp 表消息: - id (PK,
- id (PK, AI)
- username
- useremail
- userpass
- mess_id (PK, AI)
- mess_to (FK - users.id)
- mess_from (FK - users.id)
- mess_txt
- timestamp
表消息:
- id (PK, AI)
- username
- useremail
- userpass
- mess_id (PK, AI)
- mess_to (FK - users.id)
- mess_from (FK - users.id)
- mess_txt
- timestamp
当用户登录时,我想检索那些向当前用户发送消息以及当前用户向其发送消息的人的用户名
到目前为止,我尝试的查询是
选择username FROM users JOIN messages ON users.id=messages.mess\u to或users.id=messages.mess\u FROM WHERE users.id=1
上面的查询从当前用户发送消息或接收消息的每个字段返回当前用户的用户名,我想得到的是向他发送消息和从该用户获得消息的用户的名称
我将使用联合子查询来获取与当前用户进行对话的用户的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