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

有下面两个表

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. SQL点滴24—监测表的变化(转载)
  3. HDU_1072_Nightmare题解
  4. fastai学习:05_pet_breeds Questionnaire
  5. CFileDialog获取文件与文件夹路径
  6. 【mac apache】了解自带的apache
  7. 数据结构与算法 完整版单链表(附GIF)
  8. python中的join函数连接dataframe_python pandas处理CSV文件并使用join()方法拼接两个dataframe...
  9. 063 模块的四种形式
  10. Linux下的定时任务Cron
  11. Mongodb(芒果DB)之服务搭建
  12. C语言科学计数法字符串转化为实数
  13. 贪吃蛇c语言代码vc,纯C语言实现贪吃蛇游戏(VC6.0)
  14. docker+scrapy+scrapy_splash爬取大麦网
  15. iphone11pro市场价_iPhone11 Pro Max:再见
  16. 基于Open vSwitch搭建虚拟路由器
  17. QuickTime格式解析
  18. 支付宝与微信:移动支付的巅峰对决
  19. 自己动手搭建搜索工具
  20. LoveChat独立部署即时通讯IM(前台后台不开源)聊天APP

热门文章

  1. android 回归测试,android测试:monkey使用方法
  2. linux部署多个tomcat服务,Linux 一台服务器部署多个tomcat
  3. python七段数码管倒计时_python实现七段数码管和倒计时效果
  4. 服务器2012系统在dos卸载,Windows系统下彻底删除Windows.old 文件夹的方法
  5. 图解自监督学习(CV)
  6. 安徽科技学院计算机二级,安徽科技大学2017年3月计算机二级考试报名时间
  7. 英文数据集txt_YOLOv5在建筑工地中安全帽佩戴检测的应用(已开源+数据集)
  8. c# mvvm模式获取当前窗口_AWTK-MVVM 介绍
  9. labview自动生成html,使用LabVIEW实现网页数据提取及交互.pptx
  10. 创造性模式——原型模式