各位大神,现在我遇到了一个难题需要你们的帮助。

有下面两个表

post表:文章表。

record表:记录表,用于记录用户阅读顺序。

record表 根据用户的阅读文章顺序用一个字段 postid 记录 post 表的主键ID,既 record.postid 的外键为 post.id 。

现在需要根据 record 表里的 postid 查找 post表的文章。(假设用记阅读顺序为:'文章1,文章2,文章2,文章3,文章3' 允许文章重复。)

开始我用

SELECT *

FROM post

WHERE id IN (postid1,postid2,postid2,postid3,postid3);

查找结果只能查找 postid1,postid2,postid3 的文章。

现在想要的业务逻辑是:

1:根据用户的阅读记录查找post表文章。

2:允许重复。

比如用户阅读的文章读顺序为:'文章1,文章2,文章2,文章3,文章3',查找 post 表出来的结果为:post.id1, post.id2,post.id2,post.id2,post.id3。

注:考虑过用 FOR 循环

for (.....){

...

变量 数组x;

数组x添加 SELECT * FROM post WHERE id = postidx;

....

}

但又担心效率问题。

回复内容:

各位大神,现在我遇到了一个难题需要你们的帮助。

有下面两个表

post表:文章表。

record表:记录表,用于记录用户阅读顺序。

record表 根据用户的阅读文章顺序用一个字段 postid 记录 post 表的主键ID,既 record.postid 的外键为 post.id 。

现在需要根据 record 表里的 postid 查找 post表的文章。(假设用记阅读顺序为:'文章1,文章2,文章2,文章3,文章3' 允许文章重复。)

开始我用

SELECT *

FROM post

WHERE id IN (postid1,postid2,postid2,postid3,postid3);

查找结果只能查找 postid1,postid2,postid3 的文章。

现在想要的业务逻辑是:

1:根据用户的阅读记录查找post表文章。

2:允许重复。

比如用户阅读的文章读顺序为:'文章1,文章2,文章2,文章3,文章3',查找 post 表出来的结果为:post.id1, post.id2,post.id2,post.id2,post.id3。

注:考虑过用 FOR 循环

for (.....){

...

变量 数组x;

数组x添加 SELECT * FROM post WHERE id = postidx;

....

}

但又担心效率问题。

SELECT P.*

FROM Post P

LEFT JOIN Record R ON R.PostID = P.ID

ORDER BY R.ID ASC

Record表记录阅读顺序,所以需要根据Record表的顺序来就排序

可以提供一种思路:用in的方式从数据库取出数据,用map建立对应关系map.put(postid,post)。再按照id的顺序取出后组装需要的数据类型

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql根据ID的顺序查找_求救:mysql 如何根据给定的 ID顺序查找结果?相关推荐

  1. mysql技术innodb存储引擎读后感_《Mysql技术内幕-InnoDB存储引擎》读书笔记 (一)...

    @(Mysql) 官方数据库 下载 导入/data/mysql57/bin/mysql --socket /data/mysql3306/mysql.socket -uroot -ppassword1 ...

  2. mysql索引优化是什么意思_理解MySQL——索引与优化

    写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将 ...

  3. mysql必知必会笔记_《MySql必知必会》笔记整理

    数据库基础 关键词: 数据库 表(表名唯一,取决多个因素,如不同数据库的表可以同名) 模式(关于数据库和表的布局及特性的信息) 列(表中的字段) 行[行(raw)和记录(record)很大程度可以等同 ...

  4. mysql集群和主从区别_搭建MySQL主从集群,主从复制过程中同步延迟问题

    上一节我们成功搭建了主从复制.读写分离,实际上并发量和数据量不大的情况下,使用起来也是非常的流畅,无任何问题,可以正常运行了. 但是,要保证高可用,高并发的情况,可以写数据库master就有累了,从服 ...

  5. mysql的student是什么意思_复习mysql

    一.复习详尽如下: 创建一个test库 create database test; 授权一个用户 grant all privileges on *.* to 'xiang'@'%' identifi ...

  6. MySQL用函数统计记录总数_在mysql中使用COUNT 或者SUM函数计算记录总数

    count函数的作用 想要真正的理解count函数,我们就必须明白count函数的作用. 作用一:统计某一列非空(not null)值得数量,即统计某列有值得结果数,使用count(col),其中co ...

  7. mysql数据库是一个软件呐_【MySQL数据库软件、SQL】

    内容 数据库的基本概念 MySQL数据库软件 安装 卸载 配置 SQL 数据库的基本概念 1. 数据库的英文单词: DataBase 简称 : DB 2. 什么数据库? * 用于存储和管理数据的仓库. ...

  8. 关于mysql的项把他们都_卸载mysql | 学步园

    如果你的电脑里装过MySQL,想再重新安装MySQL的时候可能就会因为前一版本卸载不完全而出现错误了--最常见的就是安装好后设置参数的最后一步验证时,会在Execute configurattion步 ...

  9. mysql转义单引号双引号_[转] mysql 单引号 双引号

    今天在写一条sql语句的时候,用的双引号,sql语句执行错误.记的同事问我mysql语句中的单引号和双引号有区别吗?回答是没有区别. 今天特地查了查,还是有点区别的. mysql中的一段说明: 在my ...

  10. mysql 高并发写入锁表_使用mysql中的锁解决高并发问题

    阿里云产品通用代金券,最高可领1888分享一波阿里云红包. 阿里云的购买入口 为什么要加锁 多核计算机的出现,计算机实现真正并行计算,可以在同一时刻,执行多个任务.在多线程编程中,因为线程执行顺序不可 ...

最新文章

  1. 机器视觉工程师必须了解的基础知识
  2. 小米6通话音量补丁_智能手机的音量键有很多功能,你用过吗?
  3. hp designiet 500绘图仪程序_邹军:通过数控宏程序实现刀具寿命管理
  4. Python+Selenium学习笔记8 - 多表单多窗口切换
  5. (四)DOM对象和jQuery对象
  6. java数据库连接类,已经把数据库操作的方法都封装好了
  7. tkinter显示mysql表_Python(Tkinter)如何只显示Mysql记录而不显示列表?
  8. Java讲课笔记02:Java集成开发环境
  9. 坐拥12亿月活流量,腾讯直播带货的底牌
  10. js long类型精度丢失_解决js处理Long类型丢失精度的问题
  11. 成为iPhone游戏开发者的十大秘技
  12. Wings与parasoft c++ test在单元测试用例自动生成能力的比对
  13. 【Codeforces Round #544 (Div. 3)】K Balanced Teams【线性DP】
  14. 严蔚敏数据结构习题第五章
  15. mongoDB下载安装
  16. 【室内定位】采用TOA借助多个基站与终端之间距离进行目标定位matlab源码
  17. 积极主动沟通说话交流的重要性和案例以及技巧
  18. mysql根据各种条件统计_Mysql按条件计数多种实现方法解析
  19. 【舍友计划】恶搞~让计算机变卡变慢
  20. ubuntu16.04下安装dnw和fastboot工具,解决开发板只有uboot系统,没有网络的情况下,通过dnw和fastboot传送文件到开发板

热门文章

  1. mysql dmz_MySQL 中LIMIT的使用详解
  2. 帝国cms linux伪静态规则,帝国cms7.2伪静态规则怎么写
  3. Maven 系列 3:如何在 Eclipse 中集成配置 Maven(以 apache-maven-3.6.2、eclipse-jee-2019-09-R-win32-x86_64 为例)
  4. 自己写的android apk反编译,获取Android自己写好了的apk以及反编译
  5. Linux高级编程实验(30个)
  6. java接口的应用举例
  7. python中multiply函数_python中numpy库内multiply()、dot()和 * 三种乘法运算的区别小计...
  8. 深拷贝与浅拷贝、值语义与引用语义对象语义 ——以C++和Python为例
  9. php无限评论回复_php实现无限级评论功能_后端开发
  10. linux ftp mysql_linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建