简体   繁体   English

具有内部联接和子查询的SQL

[英]SQL with inner join and subquery

I have following query: 我有以下查询:

SELECT * FROM thread where sender = 135 or receiver = 135 order by updatedttm desc

The above query returns correct record which has a senderid and receiverid. 上面的查询返回正确的记录,其中包含senderid和receiveid。 The senderid and receiverid are both present in user table. 用户表中存在senderid和receiveid。 I want to get names of both senderid and receiverid by joining user table to above query. 我想通过将用户表加入上述查询来获取senderid和Receiverid的名称。

You can join the user table twice, once with the sender id and the receiver id and get the name. 您可以两次join用户表,一次使用发送者ID和接收者ID并获得名称。

SELECT t.*,usend.user_name sender_name, urec.user_name receiver_name
FROM thread t
JOIN users usend on usend.user_id = t.sender
JOIN users urec on urec.user_id = t.receiver
where sender = 135 or receiver = 135
order by updatedttm desc

I would go with LEFT JOIN as it will display your thread even if the sender or the receiver gets deleted. 我将使用LEFT JOIN因为即使发送者或接收者被删除,它也会显示您的线程。

SELECT *,
    sender.username AS sender_name,
    receiver.username AS receiver_name
FROM thread AS t
LEFT JOIN users AS sender ON t.sender = sender.user_id
LEFT JOIN users AS receiver ON t.sender = receiver.user_id
WHERE sender = 135 OR receiver = 135 
ORDER BY 
updatedttm DESC

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM