MySQL在两个用户之间进行对话

编程入门 行业动态 更新时间:2024-10-27 08:37:50
本文介绍了MySQL在两个用户之间进行对话的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个名为private_messages的SQL表,带有字段(id,from,to,message,stamp). 标记字段对应于消息的日期

I have a SQL table named private_messages with fields (id,from,to,message,stamp). the stamp field corresponds to the date of the message

那么我需要什么查询:

1)在两个用户之间进行对话(按日期排序)?

1) get a conversation between two users (ordered by date)?

我已经尝试过查询

(SELECT * FROM private_messages WHERE from=$my_id AND to=$other_id) UNION (SELECT * FROM private_messages WHERE from=$other_id AND to=$my_id) ORDER BY stamp ;

但不起作用...

2)是否按日期将我和其他用户之间的最后一条消息(每个用户都有不同的用户)按日期排序(例如,像在faceebook中那样构造收件箱)?

2) get the last messages beetween me and other users, each one with a different user, ordered by date (to construct a inbox like in faceebook for example)?

推荐答案

1.)

SELECT * FROM private_messages a WHERE (a.from = $my_id AND a.to = $other_id) OR (a.from = $other_id AND a.to = $my_id) ORDER BY stamp DESC

2.)

SELECT f.* FROM ( SELECT * FROM private_messages a WHERE (LEAST(a.from, a.to), GREATEST(a.from, a.to), a.stamp) IN ( SELECT LEAST(b.from, b.to) AS x, GREATEST(b.from, b.to) AS y, MAX(b.stamp) AS msg_time FROM private_messages b GROUP BY x, y ) ) f WHERE $my_id IN (f.from, f.to) ORDER BY f.stamp DESC

更多推荐

MySQL在两个用户之间进行对话

本文发布于:2023-07-11 09:31:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1093592.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:两个   用户   MySQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!