Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按日期排序的SQL,带有用于消息传递的左联接_Mysql_Sql_Left Join_Sql Order By - Fatal编程技术网

Mysql 按日期排序的SQL,带有用于消息传递的左联接

Mysql 按日期排序的SQL,带有用于消息传递的左联接,mysql,sql,left-join,sql-order-by,Mysql,Sql,Left Join,Sql Order By,我有一个问题似乎很容易解决,但事实并非如此 我有一个MySQl数据库,存储用户、聊天会话和用户的聊天线路 以下是我的数据库的UML模式的一部分: 在聊天室会话中,我们只存储所有会话id(自动递增) 在聊天室会话成员中,我们存储所有用户会话 在聊天行中,我们存储所有聊天会话行 例如: 问题是如何获取特定用户的会话,同时获取最后一行(如果存在) 我的最后一次尝试给出了以下代码: 选择'chat\u sessions\u members`.'session\u id`,任意值('send\u at

我有一个问题似乎很容易解决,但事实并非如此

我有一个MySQl数据库,存储用户、聊天会话和用户的聊天线路

以下是我的数据库的UML模式的一部分:

在聊天室会话中,我们只存储所有会话id(自动递增)
在聊天室会话成员中,我们存储所有用户会话
在聊天行中,我们存储所有聊天会话行

例如:

问题是如何获取特定用户的会话,同时获取最后一行(如果存在)

我的最后一次尝试给出了以下代码:

选择'chat\u sessions\u members`.'session\u id`,任意值('send\u at`)作为'send\u at`,任意值('line`)作为'line``
来自“聊天”会话\u成员`
左键加入“聊天会话成员”上的“聊天线路”。“会话id”=“聊天线路”。“会话id”`
其中'user\u id`='1'
按“会话”id分组`
按日期订购(`send_at`)说明
但这不是一个有序的答复


我知道很多关于这一点的帖子,但我不完全理解。

如果我理解正确,您希望每个会话都有一个给定用户的最后一行(最近一行)。如果是这样,您可以使用
ROW\u NUMBER()
来标识最后一行,并使用
LEFT JOIN
来标识用户:

SELECT cl.*
FROM chat_sessions_members csm LEFT JOIN
     (SELECT cl.*, 
             ROW_NUMBER() OVER (PARTITION BY cl.session_id ORDER BY cl.send_at DESC) as seqnum
      FROM chat_lines cl
     ) cl
     ON cl.session_id = csm.session_id AND seqnum = 1
WHERE csm.user_id = 1
ORDER BY DATE(cl.send_at) DESC;

你不需要说你想要返回什么,输出是输入的函数。这还不清楚。使用足够的单词、句子和引用部分例子,清楚、完整地说出你的意思。当给出一个业务关系(ship)/关联或表(base或query result)时,请说明其中的一行根据其列值表示的业务状况。请不要大喊大叫。仅将图像用于无法表示为文本或扩充文本的内容。请在代码问题中给出--cut&paste&runnable代码,包括作为代码输入的最小代表性示例;期望和实际输出(包括逐字记录错误消息);标签和版本;清晰的说明和解释。尽可能少地给出代码,即显示为OK的代码,并通过显示为not OK的代码进行扩展。(调试基础。)用于包含DBMS和DDL(包括约束和索引)的SQL,并将其作为格式化为表的代码输入。在总体目标上暂停工作,在第一个表达中删去代码,不要给出你所期望的,说出你所期望的,为什么。非常感谢!我真的认为我的主题在将来是不可读的你能解释这个请求吗?它可以帮助几个人