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

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

有下面两个表

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的顺序取出后组装需要的数据类型

f68f2add0b68e4f9810432fce46917b7.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DIY—USB学习板设计以及驱动开发

暑假在Intel OTC做访问学者时,看到公司有两个小巧的USB设备-温度计和LED音乐播放器,用于交大学生的Linux Kernel教学中。但看似简单的这些设备,还是从国外购买而得。因此,从intel回来之后,我就告诉学生能否设计一种USB…

ps -ef |grep

[rootzengmg 6379]# ps -ef | grep redisroot 1978 1 0 09:35 ? 00:00:16 /usr/local/bin/redis-server 127.0.0.1:6379 root 116656 2708 0 15:56 pts/1 00:00:00 grep redis 字段含义如下: UID PID PPID CSTIME…

python入坑指南_Rust入坑指南:万物初始

有没有同学记得我们一起挖了多少个坑?嗯…其实我自己也不记得了,今天我们再来挖一个特殊的坑,这个坑可以说是挖到根源了——元编程。元编程是编程领域的一个重要概念,它允许程序将代码作为数据,在运行时对代码进行修改…

python和noip的区别_【noi与noip的区别】

什么是NOINOI:全国青少年信息学奥林匹克(NOI)是国内包括港澳在内的省级代表队高水平的大赛,自1984年至今,在国内包括香港、澳门组织竞赛活动。每年经各省选拔产生5名选手(其中一名是女选手),由中国计算机学会在计算机普及较好的城…

gradle和maven区别

原文连接:http://blog.csdn.net/jueane/article/details/50383431 --------------------------------------------- Gradle和Maven都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产…

iOS开发提问题

1、打造最受企业欢迎的iOS开发者: 一直都存在的问题,什么样的员工最受企业欢迎?一直也有人在努力提升自己,成为受企业欢迎的员工然而,我们应该往方向去提升自己呢?88家知名企业今年来iOS面试题合集&#xf…

maven引用公共包_使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴...

使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴。1、首先在本地maven位置的配置文件setting.xml(没有该文件就新建这个文件)中,添加配置maven仓库的地址。我用的是我的GitHub仓库…

Gradle笔记——Gradle的简介与安装

原文连接:http://blog.csdn.net/maosidiaoxian/article/details/40109337 gradle专栏 ----------------------------------------- Gradle 安装 1,安装JDK,并配置JAVA_HOME环境变量。因为Gradle是用Groovy编写的,而Groovy基于JA…

WPF之鼠标滑动切换图片

原文:WPF之鼠标滑动切换图片在网上找了一会儿也没找到我想要的效果,还是自己动手,丰衣足食吧。 需求:当前面板中只显示一张图片,图片栏的下部有用来显示当前图片处于图片队列中的位置的圆球,并且点击下部栏内的圆球可以…

CPU的核心数、线程数的关系和区别

原文地址:http://blog.csdn.net/yu132563/article/details/45222935 ------------------------------------- 我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级。CPU从早期的单核,发展到现在的双核…

mysql in 子查询优化_mysql in 子查询 容易优化

mysql in 子查询 简单优化 大数量下,不要使用 in 嵌套子查询,性能很差,很容易卡死。 ? 简单调整方式如下: select uid,nick_name from uc_users where uid in(select fid from uc_follow where uid#uid#) ? 可拆解成&#xff1a…

谷歌浏览器插件入门示例

2019独角兽企业重金招聘Python工程师标准>>> 实现:任何网址实现图片下载和获取当前域名的cookies的json字符串。 图片下载是给小白用的,可以选中批量下载,获取cookies 是为了方便程序员调试用。 获取cookies: git地址:…

Fiddler中response乱码的解决方案

原文连接:http://blog.csdn.net/quiet_girl/article/details/50577828 ---------------------------------------------------------- 有时候我们看到Response中的HTML是乱码的, 这是因为HTML被压缩了, 我们可以通过两种方法去解压缩。 解决…

线程带来的风险

线程安全性问题 多线程环境下 多个线程共享一个资源对资源进行非原子性操作。 以上三者都存在就会发生线程安全性问题 如文中的卖火车票问题:http://blog.csdn.net/zengmingen/article/details/53217229 原因是:一行java代码转成.class字节码文件后是…

vue内引入语音播报功能

为什么80%的码农都做不了架构师?>>> 在vue项目中引入语音播报,使用的科大讯飞语音接入, 具体思路为每次接收到语音信息后存入一个数组,然后监听这个数组,开始冲第一个索引播放,并且同时根据vue…

php mysql 排序规则_php 数组排序以及按照某个字段排序

如果你已经使用了一段时间PHP的话,那么,你应该已经对它的数组比较熟悉了——这种数据结构允许你在单个变量中存储多个值,并且可以把它们作为一个集合进行操作。经常,开发人员发现在PHP中使用这种数据结构对值或者数组元素进行排序…

单例问题与线程安全

饿汉式 没有线程安全性问题 懒汉式 public class SingletonDemo2 {private static SingletonDemo2 instance;private SingletonDemo2() {}public static SingletonDemo2 getInstance() {if(instancenull) {instancenew SingletonDemo2();}return instance;}}如果遇到多线程。上…

python 音速_中国大学MOOC的APP(慕课)2021用Python玩转数据章节答案

在高技术战争件下,信息的获取相当于人的感觉器官,信息的传输相当于人的神经网络,信息的处理相当于人的大脑,( )则将它们联系为一个整体,构成了作战的神经系统。车身可拆卸的连接有螺纹连接、卡口链接、铰链连接。在高技术战争件下,信息的获取相当于人的感觉器官,信息的传输相当…

Mysql中的触发器

原文地址:https://www.cnblogs.com/zyshi/p/6618839.html ---------------------------------------------------------什么是触发器 简单的说,就是一张表发生了某件事(插入、删除、更新操作),然后自动触发了预先编写好…

一张图理解JS的原型(prototype、_proto_、constructor的三角关系)

注意:前方高能预警,请认真仔细看完,阅读完后自己再次画下原型图,相信你一定会有更深刻的认识。(推荐炒鸡好用的画流程图的软件ProcessOn)构造函数:function Foo ( ) { };实例对象:let f1new Foo;let o1new …