mysql中查看用户创建时间,MYSQL-获取用户的最新消息MAX(时间)

对话包含消息,一条消息可以发送给2个或更多用户.

目标是按用户检索每个对话的最新消息,以便每个对话中的消息是最新的.

此外message_user.time是用户已读取消息的时间,因此当它等于0时,这意味着尚未读取消息,因此,如果第一时间是message_user且时间等于0且message.time是最大的数字.

我有那些桌子

留言用户

user message time

-----|------------|-------

7 | 1 | 0

8 | 1 | 0

7 | 2 | 300

8 | 2 | 300

7 | 3 | 400

信息

id text conversation time

---|-------------|--------------|----------

1 | blah blah1 | 1 | 200

2 | blah blah2 | 1 | 300

3 | blah blah3 | 2 | 400

4 | blah blah4 | 2 | 500

目标是按对话对消息进行分组,然后获取链接到该对话的最后一个message_user,该用户的时间戳优先较大.

我试过的是这个,但是我没有收到最后一条消息(顺序错误)

SELECT m.user, mu.message, mu.time, mu.id, m.text, m.time as message_time, m.conversation

FROM message_user as mu,message as m

WHERE mu.message=m.id AND mu.user=8

GROUP BY m.conversation

ORDER BY m.time DESC';

然后,下一步将是:

我不知道是否有可能,但是如果命令的顺序可以将message_user输出到时间等于0的位置,然后第二个命令是message.time(我什至不知道在一个请求中是否有可能完善!)

对于用户8,输出应为:

text conversation

-----------|------------

blah blah1 | 1 //because message_user.time = 0 (means message is unread)

blah blah3 | 2 //because message.time is the highest in the conversation

谢谢 !

解决方法:

首先,我建议您重组表以简化此操作,但这是我想您要的…每个对话,仅显示最后创建的转换消息,以及上次阅读该消息的时间和用户(但更喜欢未读)在此).

SELECT m.user as User_Sent, m.conversation, m.text, m.time as Time_Sent

, mu.id, mu.user as User_Read, mu.time as Time_Read

FROM message as m

JOIN (

SELECT mx.conversation, MAX(mx.time) as MaxTime

FROM message as mx GROUP BY mx.conversation

) as mx

On m.conversation = mx.conversation

And m.time = mx.MaxTime

JOIN (

SELECT mu.message, MAX(mu.time) as MaxTime, MIN(mu.time) as MinTime

From message_user as mu

GROUP BY mu.message

) as mux

On m.id = mux.message

JOIN message_user as mu

ON m.id = mu.message

AND CASE WHEN mux.MinTime = 0 THEN mux.MinTime ELSE mux.MaxTime END = mu.time

标签:sql,mysql

来源: https://codeday.me/bug/20191101/1982144.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL,可以通过向user表插入数据记录的方式来创建用户。你可以使用以下命令创建一个新用户: INSERT INTO mysql.user (User, Host, authentication_string, ...) VALUES ('username', 'localhost', 'password', ...); 其,'username'是你要创建用户名,'localhost'是指允许该用户在本地登录,'password'是该用户的密码。还可以根据需要设置其他列的值,例如 'authentication_string' 列保存密码哈希值。 创建用户后,你还需要为用户授予相应的权限。可以使用GRANT语句授予用户权限,例如: GRANT SELECT, INSERT, UPDATE ON database.* TO 'username'@'localhost'; 这会授予用户在指定数据库上执行SELECT、INSERT和UPDATE操作的权限。 最后,使用FLUSH PRIVILEGES语句刷新权限表,以确保新的用户权限生效: FLUSH PRIVILEGES; 这样,你就成功地在MySQL创建了一个新用户。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Mysql数据库之创建用户](https://blog.csdn.net/weixin_33162568/article/details/114348234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [常用mysql数据库配置文件](https://download.csdn.net/download/zslsh44/88278582)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值