pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

選擇與我交談過的用戶并與他們最后一條消息,

Select users with I have talked and last message with them like whatsapp(選擇與我交談過的用戶并與他們最后一條消息,例如 whatsapp)
本文介紹了選擇與我交談過的用戶并與他們最后一條消息,例如 whatsapp的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

限時(shí)送ChatGPT賬號(hào)..

我的數(shù)據(jù)庫中有這張表:

I have this table on my database:

sentBysentTo 是對(duì) User 表的 FK.

sentBy and sentTo are FK to User table.

在這張桌子上我有用戶之間的消息:

On this table I have messages between users:

sentBy |  sentTo  |     dateSent     |     body
-------+----------+------------------+-----------------
  1    |    2     | 11/21/2010 10:00 | Hey!
-------+----------+------------------+-----------------
  2    |    1     | 11/21/2010 10:50 | Hi!
-------+----------+------------------+-----------------
  1    |    2     | 11/21/2010 10:51 | msg body 1
-------+----------+------------------+-----------------
  2    |    1     | 11/21/2010 11:05 | msg body 2
-------+----------+------------------+-----------------
  1    |    3     | 11/21/2010 11:51 | msg body 3
-------+----------+------------------+-----------------
  3    |    1     | 11/21/2010 12:05 | msg body 4
-------+----------+------------------+-----------------
  1    |    3     | 11/21/2010 12:16 | msg body 5
-------+----------+------------------+-----------------
  4    |    1     | 11/21/2010 12:25 | msg body 6
-------+----------+------------------+-----------------

我需要知道與用戶 1 交談過的用戶以及與用戶 1 交談過的用戶.在本例中,用戶 2、3 和 4(注意,用戶 4 已向用戶 1 發(fā)送消息,但用戶 1 尚未發(fā)送任何消息).

I need to know the users with whom user 1 has talked and users that have talked with user 1. In this case, with users 2, 3 and 4 (note that user 4 has sent a message to user 1, but user 1 hasn't sent any message yet).

第二個(gè)問題是:我怎樣才能獲得每個(gè)用戶的最后一條消息?我正在詢問是否獲得發(fā)送給用戶的最新消息.

And the second question is: how can I get the last message with each user? I'm asking about to get the latest message sent to a user.

例如,如果我詢問用戶 1,則用戶 2 的最新消息是:msg body 2.用戶 3 的最新消息是 msg body 5.

For example, if I'm asking about user 1, the latest message with user 2 is: msg body 2. And the latest message with user 3 is msg body 5.

如何在一個(gè) SQL SELECT 語句中獲取該信息?或者我可能需要兩次選擇.

How can I get that info in one SQL SELECT statement? Or maybe I will need two selects.

我正在嘗試做一些類似 WhatsApp 的事情.您有一個(gè)聊天屏幕,其中列出了我與之交談過的用戶列表(我的第一個(gè)問題),以及與他們交談的最后一條消息(我的第二個(gè)問題).

I'm trying to do something like WhatsApp. Where you have a chats screen with a list of users with whom I have talked (my first question), and the last message with them (my second question).

也許我可以創(chuàng)建另一個(gè)名為 Conversation 的表,將 sentBysentTo 移動(dòng)到該表,并將最后一條帶有發(fā)送日期的消息移動(dòng)到它,但我認(rèn)為這不是一個(gè)好的設(shè)計(jì).

Maybe I can create another table named Conversation, move sentBy and sentTo to that table, and also last message with the date sent to it, but I think this can't be a good design.

我的兩個(gè)問題的結(jié)果是:

The result for my two question is this:

sentBy |  sentTo  |     dateSent     |     body
-------+----------+------------------+-----------------
  2    |    1     | 11/21/2010 11:05 | msg body 2
-------+----------+------------------+-----------------
  1    |    3     | 11/21/2010 12:16 | msg body 5
-------+----------+------------------+-----------------
  4    |    1     | 11/21/2010 12:25 | msg body 6
-------+----------+------------------+-----------------

推薦答案

以下查詢將為您提供用戶 1 的預(yù)期結(jié)果:

The following query will give you the expected results for user 1:

select m.* from messages m
join (
  select auser,withuser,max(datesent) datesent from (
    select sentby as auser,sentto as withuser,datesent from messages 
    union
    select sentto as auser,sentby as withuser,datesent from messages 
    ) as ud
  group by auser,withuser
  ) maxud 
  on (m.datesent=maxud.datesent and maxud.auser in (m.sentBy,m.sentTo))
where auser=1

不用說,您可以更改 where 子句中的條件,以便為任何用戶獲得類似的結(jié)果.

Needless to say, you can change the condition in the where clause to get similar results for any user.

但是,我的方法是創(chuàng)建一個(gè)視圖,然后從中進(jìn)行選擇,如下所示:

However, my approach would be to create a view and later select from it, like so:

create view conversation_stuff as
select m.sentBy,m.sentTo,m.dateSent,m.body,maxud.auser,maxud.withuser
from messages m
join (
  select auser,withuser,max(datesent) datesent from (
    select sentby as auser,sentto as withuser,datesent from messages 
    union
    select sentto as auser,sentby as withuser,datesent from messages 
    ) as ud
  group by auser,withuser
  ) maxud 
  on (m.datesent=maxud.datesent and maxud.auser in (m.sentBy,m.sentTo))

select sentBy,sentTo,dateSent,body from conversation_stuff where auser=1;

我猜這對(duì)其他用途也很有用.

This could prove useful for other uses too, I guess.

EDIT:在任何地方將 user 更改為 auser,以便 sqlserver 停止抱怨以避免 []s...

EDIT: Changed user to auser everywhere, for sqlserver to stop complaining and to avoid []s...

這篇關(guān)于選擇與我交談過的用戶并與他們最后一條消息,例如 whatsapp的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

What SQL Server Datatype Should I Use To Store A Byte[](我應(yīng)該使用什么 SQL Server 數(shù)據(jù)類型來存儲(chǔ)字節(jié) [])
Interpreting type codes in sys.objects in SQL Server(解釋 SQL Server 中 sys.objects 中的類型代碼)
Typeorm Does not return all data(Typeorm 不返回所有數(shù)據(jù))
Typeorm .loadRelationCountAndMap returns zeros(Typeorm .loadRelationCountAndMap 返回零)
How to convert #39;2016-07-01 01:12:22 PM#39; to #39;2016-07-01 13:12:22#39; hour format?(如何將“2016-07-01 01:12:22 PM轉(zhuǎn)換為“2016-07-01 13:12:22小時(shí)格式?)
MS SQL: Should ISDATE() Return quot;1quot; when Cannot Cast as Date?(MS SQL:ISDATE() 是否應(yīng)該返回“1?什么時(shí)候不能投射為日期?)
主站蜘蛛池模板: 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 进口试验机价格-进口生物材料试验机-西安卡夫曼测控技术有限公司 | 动物麻醉机-数显脑立体定位仪-北京易则佳科技有限公司 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 急救箱-应急箱-急救包厂家-北京红立方医疗设备有限公司 | 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 | 中央空调温控器_风机盘管温控器_智能_液晶_三速开关面板-中央空调温控器厂家 | 北京银联移动POS机办理_收银POS机_智能pos机_刷卡机_收银系统_个人POS机-谷骐科技【官网】 | 嘉兴泰东园林景观工程有限公司_花箱护栏| 骨密度仪-骨密度测定仪-超声骨密度仪-骨龄测定仪-天津开发区圣鸿医疗器械有限公司 | 车牌识别道闸_停车场收费系统_人脸识别考勤机_速通门闸机_充电桩厂家_中全清茂官网 | 千淘酒店差旅平台-中国第一家针对TMC行业的酒店资源供应平台 | 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | 电渗析,废酸回收,双极膜-山东天维膜技术有限公司 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 塑胶地板-商用PVC地板-pvc地板革-安耐宝pvc塑胶地板厂家 | 长沙中央空调维修,中央空调清洗维保,空气能热水工程,价格,公司就找维小保-湖南维小保环保科技有限公司 | 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 转向助力泵/水泵/发电机皮带轮生产厂家-锦州华一精工有限公司 | 深圳办公室装修,办公楼/写字楼装修设计,一级资质 - ADD写艺 | 耐火砖厂家,异形耐火砖-山东瑞耐耐火材料厂 | 上海办公室设计_办公楼,写字楼装修_办公室装修公司-匠御设计 | 贝壳粉涂料-内墙腻子-外墙腻子-山东巨野七彩贝壳漆业中心 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 顶呱呱交易平台-行业领先的公司资产交易服务平台 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | 连续油炸机,全自动油炸机,花生米油炸机-烟台茂源食品机械制造有限公司 | 刺绳_刀片刺网_刺丝滚笼_不锈钢刺绳生产厂家_安平县浩荣金属丝网制品有限公司-安平县浩荣金属丝网制品有限公司 | 葡萄酒灌装机-食用油灌装机-液体肥灌装设备厂家_青州惠联灌装机械 | 污水提升器,污水提升泵,污水提升装置-德国泽德(zehnder)水泵系统有限公司 | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | 氟氨基酮、氯硝柳胺、2-氟苯甲酸、异香兰素-新晨化工 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 东亚液氮罐-液氮生物容器-乐山市东亚机电工贸有限公司 | HYDAC过滤器,HYDAC滤芯,现货ATOS油泵,ATOS比例阀-东莞市广联自动化科技有限公司 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 电缆桥架生产厂家_槽式/梯式_热镀锌线槽_广东东莞雷正电气 | 厚壁钢管-厚壁无缝钢管-小口径厚壁钢管-大口径厚壁钢管 - 聊城宽达钢管有限公司 | 免费B2B信息推广发布平台 - 推发网 | 定制异形重型钢格栅板/钢格板_定做踏步板/排水沟盖板_钢格栅板批发厂家-河北圣墨金属制品有限公司 | 恒温恒湿试验箱厂家-高低温试验箱维修价格_东莞环仪仪器_东莞环仪仪器 |