我有使用这些列存储的消息的消息传送系统:SQL检查是否A和B IN(...)
- 消息,这是实际的消息
- to_id,用户的编号“会收到消息
- from_id,发送消息
我想查询像这样的对话的用户的ID:
SELECT sender.username, message
FROM messages
JOIN users sender ON sender.id=messages.from_id
JOIN users receiver ON receiver.id=messages.to_id
WHERE (sender.username LIKE 'user1' AND receiver.username LIKE 'user2')
OR (receiver.username LIKE 'user1' AND sender.username LIKE 'user2')
其工作原理,但我想通过USER1和user2的只有一次,类似
WHERE (from_id, to_id) IN ((SELECT id FROM users WHERE username LIKE 'user1'),
(SELECT id FROM users WHERE username LIKE 'user2'))
不mysql中工作。有什么建议么?
除非您实际上不需要'LIKE',而是可以使用'=',否则我认为您的原始方法可能是最好的方法。 – Ryan