繁体   English   中英

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

[英]SQL with inner join and subquery

我有以下查询:

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

上面的查询返回正确的记录,其中包含senderid和receiveid。 用户表中存在senderid和receiveid。 我想通过将用户表加入上述查询来获取senderid和Receiverid的名称。

您可以两次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

我将使用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