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的顺序取出后组装需要的数据类型
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
mysql根据ID的顺序查找_求救:mysql 如何根据给定的 ID顺序查找结果?相关推荐
- mysql技术innodb存储引擎读后感_《Mysql技术内幕-InnoDB存储引擎》读书笔记 (一)...
@(Mysql) 官方数据库 下载 导入/data/mysql57/bin/mysql --socket /data/mysql3306/mysql.socket -uroot -ppassword1 ...
- mysql索引优化是什么意思_理解MySQL——索引与优化
写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将 ...
- mysql必知必会笔记_《MySql必知必会》笔记整理
数据库基础 关键词: 数据库 表(表名唯一,取决多个因素,如不同数据库的表可以同名) 模式(关于数据库和表的布局及特性的信息) 列(表中的字段) 行[行(raw)和记录(record)很大程度可以等同 ...
- mysql集群和主从区别_搭建MySQL主从集群,主从复制过程中同步延迟问题
上一节我们成功搭建了主从复制.读写分离,实际上并发量和数据量不大的情况下,使用起来也是非常的流畅,无任何问题,可以正常运行了. 但是,要保证高可用,高并发的情况,可以写数据库master就有累了,从服 ...
- mysql的student是什么意思_复习mysql
一.复习详尽如下: 创建一个test库 create database test; 授权一个用户 grant all privileges on *.* to 'xiang'@'%' identifi ...
- MySQL用函数统计记录总数_在mysql中使用COUNT 或者SUM函数计算记录总数
count函数的作用 想要真正的理解count函数,我们就必须明白count函数的作用. 作用一:统计某一列非空(not null)值得数量,即统计某列有值得结果数,使用count(col),其中co ...
- mysql数据库是一个软件呐_【MySQL数据库软件、SQL】
内容 数据库的基本概念 MySQL数据库软件 安装 卸载 配置 SQL 数据库的基本概念 1. 数据库的英文单词: DataBase 简称 : DB 2. 什么数据库? * 用于存储和管理数据的仓库. ...
- 关于mysql的项把他们都_卸载mysql | 学步园
如果你的电脑里装过MySQL,想再重新安装MySQL的时候可能就会因为前一版本卸载不完全而出现错误了--最常见的就是安装好后设置参数的最后一步验证时,会在Execute configurattion步 ...
- mysql转义单引号双引号_[转] mysql 单引号 双引号
今天在写一条sql语句的时候,用的双引号,sql语句执行错误.记的同事问我mysql语句中的单引号和双引号有区别吗?回答是没有区别. 今天特地查了查,还是有点区别的. mysql中的一段说明: 在my ...
- mysql 高并发写入锁表_使用mysql中的锁解决高并发问题
阿里云产品通用代金券,最高可领1888分享一波阿里云红包. 阿里云的购买入口 为什么要加锁 多核计算机的出现,计算机实现真正并行计算,可以在同一时刻,执行多个任务.在多线程编程中,因为线程执行顺序不可 ...
最新文章
- 价值为王,市场需要降温
- SQL点滴24—监测表的变化(转载)
- HDU_1072_Nightmare题解
- fastai学习:05_pet_breeds Questionnaire
- CFileDialog获取文件与文件夹路径
- 【mac apache】了解自带的apache
- 数据结构与算法 完整版单链表(附GIF)
- python中的join函数连接dataframe_python pandas处理CSV文件并使用join()方法拼接两个dataframe...
- 063 模块的四种形式
- Linux下的定时任务Cron
- Mongodb(芒果DB)之服务搭建
- C语言科学计数法字符串转化为实数
- 贪吃蛇c语言代码vc,纯C语言实现贪吃蛇游戏(VC6.0)
- docker+scrapy+scrapy_splash爬取大麦网
- iphone11pro市场价_iPhone11 Pro Max:再见
- 基于Open vSwitch搭建虚拟路由器
- QuickTime格式解析
- 支付宝与微信:移动支付的巅峰对决
- 自己动手搭建搜索工具
- LoveChat独立部署即时通讯IM(前台后台不开源)聊天APP
热门文章
- android 回归测试,android测试:monkey使用方法
- linux部署多个tomcat服务,Linux 一台服务器部署多个tomcat
- python七段数码管倒计时_python实现七段数码管和倒计时效果
- 服务器2012系统在dos卸载,Windows系统下彻底删除Windows.old 文件夹的方法
- 图解自监督学习(CV)
- 安徽科技学院计算机二级,安徽科技大学2017年3月计算机二级考试报名时间
- 英文数据集txt_YOLOv5在建筑工地中安全帽佩戴检测的应用(已开源+数据集)
- c# mvvm模式获取当前窗口_AWTK-MVVM 介绍
- labview自动生成html,使用LabVIEW实现网页数据提取及交互.pptx
- 创造性模式——原型模式