当前位置: 首页 > 面试题库 >

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

端木承业
2023-03-14
问题内容

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

所以我需要什么查询:

1)得到两个用户之间的对话(按日期排序)?

我已经尝试过查询

(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中构建收件箱)?


问题答案:

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


 类似资料:
  • 问题内容: 以下查询: 什么也不返回。 我应该有足够多的数据来使查询工作。我究竟做错了什么? 问题答案: 您的第二个日期早于您的第一个日期(即,您正在查询2010年9月29日至2010年1月30日之间)。尝试颠倒日期的顺序:

  • 我的应用程序中有三个片段,其中需要传递和接收数据。我应该如何进行他们之间的沟通。我试图参考许多网站,但没有解决方案。 请给我推荐一些好的链接。 提前感谢。

  • 早上好,我有两张表,ANALISI有1462632记录,帕齐恩特有1408146记录,这个简单的计数使用帕津特的索引之一需要大约30秒才能回馈大约65000条记录 我还尝试在分析中添加索引。ID_PAZIENTE,但没有好的结果。是否有提高绩效的方法? 这是在我看来没问题的腐蚀性解释

  • 问题内容: 如果记录日期时间范围涵盖今天,我想显示记录。(此示例的3和4) 我尝试用两个来做到这一点,它在第二秒给出了语法错误。 我怎样才能做到这一点? 问题答案:

  • 问题内容: 有两个Java文件,Server.java和Client.java。两者都放在单独的容器中。 DOCKER FILES: 我用于服务器的dockerfile(位于名为“ Server”的文件夹中)为: 客户端的dockerfile(位于名为``Client’‘的文件夹中)为: 构建容器: 使用以下容器构建容器 运行容器: 我使用命令运行图像。然后我首先运行serverimage。 我得

  • 问题内容: 问题是: 假设我们有两个正在运行的Node.js进程:和。 结果中有返回的函数。 是否有一种从内部调用并获得结果的方法? 从我对Node.js的了解中,我仅找到一种使用套接字进行通信的解决方案。但是,这不是理想的,因为它将需要一个进程在端口上侦听。如果可能,我希望避免这种情况。 编辑: 经过一些问题,我很想补充一点,在层次结构中不能是的子进程,而恰恰相反。同样,如果有帮助,则只能有一个