首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL Union 语句获取 好友消息列表,最新聊天记录的获取展示

背景 最近在自己的后台项目中 为了方便展示好友消息列表数据 发现,对于最新聊天记录的获取还挺麻烦的 用到了至少我这几乎没用过的 UNION 语句,在此整理一番 … 首先,鄙人的对话记录表设计字段如下...: 各字段意义一目了然,可作为参考 整理得到的 SQL语句,使用时可替换其中的 当前用户ID 即可 为了便于阅读,缩进如下: SELECT count(is_read = 0 or null)...as friend_id,content,1 as is_read,log_time,type FROM tp5_xchat_logs WHERE (from_id = 1) AND (to_id...a on friend_id = a.id GROUP BY friend_id ORDER BY log_time DESC; sql 执行结果如下: 根据业务需求,消息列表的效果如下所示:...推荐文章 【 RUNOOB.COM —— SQL UNION 操作符】

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    sql删除一条记录后其他记录的id自动迁移,使id连续

    在写一个应用时,有这么一个操作:客户端传过来点击的位置,进行运算后得到相应数据在数据库里的id,然后显示对应的信息。...但是在进行delete后数据显示就混乱了,发现根本原因是原本连续的数据id(例如:1、2、3、4),在sqlite的delete语句执行完后(比如说删除id为2的数据),变得不连续(1、3、4)。...删除后点击第三个数据,结果他显示成第二个,而第二个早就删除了,因此显示的信息完全混乱。...(Object[]) ids); //更新id,使id大于要删除的id的往前移动一位。...db.execSQL("update tb_diary2 set _id=_id-1 where _id > ?",(Object[] )ids); 很多网友都说这样会影响性能,应该用触发器进行操作。

    1.3K20

    MySQL:如何查询出每个 Group 的 Top n 条记录?

    需求: 查询出每月 order_amount(订单金额) 排行前3的记录。 例如对于2019-02,查询结果中就应该是这3条: ?...可以看到,根据年、月、订单金额排序了,还多了一列order_rank,显示出了本条记录在本月的订单金额排名情况。 上面SQL中比较个性的是这部分: ?...这句的含义: 取得order_date中的月份值,赋值给current_month,这样就可以跟踪每个月份。 ?...接下来,把上面的SQL语句作为一个子查询,然后使用一个 where 条件就可以轻松拿到每组的 top 3。 最终语句: ? 执行结果: ? 2....需要注意的是,这个地方和 5.7 的方法不一样: ? 就是参与排序的几个值一样的时候,rank 值是一样的。 最终的SQL语句: ?

    3.8K20

    SQL Server 返回最后插入记录的自动编号ID

    IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。...IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。 @@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。...SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值 SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。...此例说明了两个作用域:一个是在 T1 上的插入,另一个是作为触发器的结果在 T2 上的插入。...IDENT_SEED(‘TableName’)–返回指定表的标示字段种子值 返回最后插入记录的自动编号 SELECT IDENT_CURRENT(‘TableName’) 返回下一个自动编号

    2.3K40

    PHP获取MySQL执行sql语句的查询时间方法

    这个更适合统计多条sql的执行情况。 我见过好像是一个博客,访问页面之后会有一个提示大概说共查询了几次数据库,用了多长时间查询数据,那么开启mysql的profile就可以轻松实现了。...可能引发有些不明的错误,注意。 批注2:profile最多保存100条记录,这个要怎么解决呢?...引用2:PHP获取毫秒级时间戳的方法 java里面可以通过gettime();获取。如果是要与java写的某些程序进行高精度的毫秒级的对接通信,则需要使用PHP输出毫秒级的时间。...为获取更为精准的毫秒级时间戳可以使用下面的代码: sql语句的查询时间方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

    5.4K00

    linq to sql取出随机记录多表查询将查询出的结果生成xml

    在手写sql的年代,如果想从sqlserver数据库随机取几条数据,可以利用order by NewId()轻松实现,要实现多表查询也可以用select * from A,B Where A.ID=B.ID...做到,但这些功能到了linq to sql中如何实现呢?...关键点: 1.随机排序问题:可以用 Select(d=> new {NewId=new Guid()}).OrderBy(d=>d.NewId)达到order by NewId()的效果 2.多表查询...from a in TableA from b in TableB where a.ID == b.ID 另外利用linq to xml还可以轻易将查询出来的结果保存成xml(这一点比传统xml...的方法确实要新颖很多) 详细代码可参考我在一个项目中的示例(功能为随机取机10条产品视频的记录,并生成xml供播放器调用) using (DBDataContext db = new DBDataContext

    3.2K60

    SQL分组查询后取每组的前N条记录

    一、前言 分组查询是常见的SQL查询语句。...资讯分类 资讯信息记录表示例数据如下: ? 资讯信息记录表 需求 :取热门的资讯信息列表且每个类别只取前3条。...但是当你仔细阅读我们的题目要求,你会发现:“它是让你每个类型下都要取浏览量的前3条记录”。 一种比较简单但是粗暴的方式就是在Java代码中循环所有的资讯类型,取出每个类型的前3条记录,最后进行汇总。...假如以本文上面的示例数据说明:就是在计算每个资讯信息记录时,多计算出一列作为其“排名”字段,然后取“排名”字段的小于等于3的记录即可。...查询结果 说明: 分析top字段的子查询,发现其满足条件有两个:其一是info_type_id和当前记录的type_id相等;其二是info表所有记录大于 当前记录的浏览量且info_type_id相等的记录数量

    26.8K32

    小红书大数据面试SQL-查询每个用户的第一条和最后一条记录

    一、题目 现有一张订单表 t_order 有订单ID、用户ID、商品ID、购买商品数量、购买时间,请查询出每个用户的第一条记录和最后一条记录。...:55:00.0 | +-----------+----------+-------------+-----------+------------------------+ 二、分析 取出符合条件的整行记录...这里需要第一条和最后一条,因为无法提前预知每个用户的行数,所以使用两次row_number进行开窗,排序方式根据时间进行正向排序和逆向排序,分别取出行号为1的借口 维度 评分 题目难度 ⭐️⭐️⭐️ 题目清晰度...desc_rn 执行SQL select order_id, user_id, product_id, quantity, purchase_time...限制asc_rn=1取第一条,desc_rn=1 取最后一条 执行SQL select order_id, user_id, product_id, quantity

    16310

    mysql查询每个用户的第一条记录_mysql怎么创建用户

    数据库记录: MYSQL查询不同用户 最新的一条记录 方法1:查询出结果后将时间排序后取第一条(只能取到一条,并且不能查询不同客户的记录) SELECT CUSTOMER_ID,CONTENT,MODIFY_TIME...,排列好的值作为子查询a,然后再根据子查询a按照CUSTOMER_ID分组) SELECT CUSTOMER_ID,CONTENT,MODIFY_TIME FROM (SELECT CUSTOMER_ID...: group by 可以根据group by 的参数列分组,但返回的结果只有一条,仔细观察发现group by是将分组后的第一条记录返回。...CUSTOMER_ID 查询结果为: 和方法二对比发现,该写法是错误的,虽然MODIFY_TIME取的值是最大值,是正确的,但是其他的值取的都是在不同的CUSTOMER_ID下的第一条记录,所以MODIFY_TIME...列的值和其他列的值不匹配,不是同一条记录。。。

    6.9K10

    功能测试之点点点如何巧妙的获取页面查询sql

    不妨尝试一下下面的这种方法: 1、检查测试环境的日志中是否会打印查询sql,这个受开发的架构设计以及日志输出级别等配置的影响 查看部署包的日志文件输出到了哪,然后再页面进行相应的操作,同时检查log文件里面是否有打印相关的...看上面这张图,可以看到 有日志打印出来,只是打印出来的sql中会包含?...这种占位符,需要自己用具体的参数去替换之后,才能看到完整的sql,接下来可以利用IDEA的一个插件去查看完整sql 2、下载IDEA工具,安装好之后,安装Mybatis Log插件,然后在页面右下角会有一个...3、日志中一般会在接口名后面加上 ==> Preparing,打印查询sql,加上==> Parameters标识当前的查询条件参数。...以上的操作你学会了吗?赶紧到工作中去试一下吧,再也不用一个个去问开发这个sql怎么来的了。

    1.2K10

    1 SQL查询优化1. 获取有性能问题SQL的方法2.慢查询日志介绍3. 实时获取3.SQL的解析预处理及生成执行计划4 对特定SQL的查询优化

    获取有性能问题SQL的方法 通过用户反馈(自然是不建议滴) 通过慢查询日志(时间可能较长) 实时获取 2.慢查询日志介绍 2.1 性能 开销较低,主要来自于磁盘I/O和存储日志所需磁盘空间,对于现代磁盘...long_query_time 指定记录慢查询日志SQL执行时间的阈值(默认单位s,可精确至ms) ?...提供信息远多于mysqldumpslow生成的 ? 续 3. 实时获取 ? 通过此表 ? 实例 3.SQL的解析预处理及生成执行计划 3.1 查询速度为什么会慢 ?...query N;查询每个阶段所消耗的时间N为queryId ?...验证表确实被修改 4.2 如何优化not in和查询 ? 下面为优化sql 4.3 使用汇总表优化查询 ? ? 汇总表 ? 显示每个商品评论数

    2.4K91
    领券