我正在进行聊天,我想选择用户已发送或接收的用户消息列表,例如fb或twitter。我已尝试过此查询
SELECT DISTINCT * FROM message WHERE `userFrom` = 2 OR `userTo` = 2
但它返回了这张照片中的内容
下面是解释我的问题的图片
所以我想在这些用户之间返回最后一个动作,如下面的
答案 0 :(得分:0)
这将从同一关系中选择fromuser和touser。
选择distinct least(a.fromuser,b.fromuser), 最大(a.touser,b.touser) 从tbl a join tbl b 在a.fromuser = b.touser上 和a.touser = b.fromuser;
见下面的演示:
答案 1 :(得分:0)
您可以在该表上的每次插入后创建一个触发器,而不是在反方向上创建相同的关系。
DELIMITER $$
CREATE TRIGGER after_users_ass_insert
AFTER INSERT ON yourTable
FOR EACH ROW
BEGIN
IF NOT EXISTS (SELECT NULL FROM yourTable A
WHERE A.userFrom=new.UserTo
AND A.userTo=new.UserFrom) THEN
DELETE FROM yourTable
WHERE userFrom=new.UserFrom
AND userTo=new.UserTo;
END IF;
END$$
DELIMITER ;