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分享一波阿里云红包. 阿里云的购买入口 为什么要加锁 多核计算机的出现,计算机实现真正并行计算,可以在同一时刻,执行多个任务.在多线程编程中,因为线程执行顺序不可 ...
最新文章
- 机器视觉工程师必须了解的基础知识
- 小米6通话音量补丁_智能手机的音量键有很多功能,你用过吗?
- hp designiet 500绘图仪程序_邹军:通过数控宏程序实现刀具寿命管理
- Python+Selenium学习笔记8 - 多表单多窗口切换
- (四)DOM对象和jQuery对象
- java数据库连接类,已经把数据库操作的方法都封装好了
- tkinter显示mysql表_Python(Tkinter)如何只显示Mysql记录而不显示列表?
- Java讲课笔记02:Java集成开发环境
- 坐拥12亿月活流量,腾讯直播带货的底牌
- js long类型精度丢失_解决js处理Long类型丢失精度的问题
- 成为iPhone游戏开发者的十大秘技
- Wings与parasoft c++ test在单元测试用例自动生成能力的比对
- 【Codeforces Round #544 (Div. 3)】K Balanced Teams【线性DP】
- 严蔚敏数据结构习题第五章
- mongoDB下载安装
- 【室内定位】采用TOA借助多个基站与终端之间距离进行目标定位matlab源码
- 积极主动沟通说话交流的重要性和案例以及技巧
- mysql根据各种条件统计_Mysql按条件计数多种实现方法解析
- 【舍友计划】恶搞~让计算机变卡变慢
- ubuntu16.04下安装dnw和fastboot工具,解决开发板只有uboot系统,没有网络的情况下,通过dnw和fastboot传送文件到开发板
热门文章
- mysql dmz_MySQL 中LIMIT的使用详解
- 帝国cms linux伪静态规则,帝国cms7.2伪静态规则怎么写
- Maven 系列 3:如何在 Eclipse 中集成配置 Maven(以 apache-maven-3.6.2、eclipse-jee-2019-09-R-win32-x86_64 为例)
- 自己写的android apk反编译,获取Android自己写好了的apk以及反编译
- Linux高级编程实验(30个)
- java接口的应用举例
- python中multiply函数_python中numpy库内multiply()、dot()和 * 三种乘法运算的区别小计...
- 深拷贝与浅拷贝、值语义与引用语义对象语义 ——以C++和Python为例
- php无限评论回复_php实现无限级评论功能_后端开发
- linux ftp mysql_linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建