我有一个消息表:
id
sender_id
recipient_id
我想提取用户(id:1)的所有消息,他是发件人或收件人,并加入他正在与之交谈的“其他人”。
就像是:
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
我不加入发件人和收件人的原因是我已经有了我正在搜索的用户,所以我认为在每条消息上加入他是一种浪费 -除非你另有说明!
这个查询是我从另一个 SO 问题中得到的,但我读过它根本没有效率,那么什么是更好的查询呢?