我有一个消息表:
NHẬN DẠNG
sender_id
recipient_id
我想提取用户 (id:1) 的所有消息,他是发件人 hoặc收件人 并加入他正在与之交谈的“其他人”。
类似于:
SELECT * FROM `message`
LEFT JOIN `user` AS u ON IF(sender_id != 1, sender_id = u.id, recipient_id = u.id)
WHERE sender_id=1 OR recipient_id=1
我没有同时加入senderVàrecipient的原因是我已经有我正在搜索的用户,所以我认为加入是一种浪费他在每条消息上 - 除非你另有说明!
这个查询是我从另一个 SO 问题得到的,但我读到它根本没有效率,那么什么是更好的查询?
这会起作用:
SELECT *
FROM message
JOIN users ON (message.sender_id = 1 AND user.id = message.recipient_id)
OR (message.recipient_id = 1 AND user.id = message.sender_id)
请注意,还有多种其他方法可以以更高效的方式执行此操作。这是我能看到的最直接的方法。
Tôi là một lập trình viên xuất sắc, rất giỏi!