mysql如何按特定id排序

问题描述

mysql如何按特定id排序我想讲数据按某些特定id排前面,怎么做到?SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `p`-- ----------------------------DROP TABLE IF EXISTS `p`;CREATE TABLE `p` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) default NULL, `categories_id` int(11) default NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;-- ------------------------------ Records of p-- ----------------------------INSERT INTO `p` VALUES ('1', 'jimmy', '2');INSERT INTO `p` VALUES ('2', 'tina', '2');INSERT INTO `p` VALUES ('3', 'dd', '2');INSERT INTO `p` VALUES ('4', 'hello', '2');INSERT INTO `p` VALUES ('5', 'world', '2');INSERT INTO `p` VALUES ('6', 'slucky', '2');SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `p_sort`-- ----------------------------DROP TABLE IF EXISTS `p_sort`;CREATE TABLE `p_sort` ( `categories_id` int(10) NOT NULL default '0', `best_sort_person_id` varchar(100) default NULL, PRIMARY KEY (`categories_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;-- ------------------------------ Records of p_sort-- ----------------------------INSERT INTO `p_sort` VALUES ('2', '2,5,1');

解决方案

select e.* from (select a.* from p a,p_sort b where a.categories_id = b.categories_id and find_in_set(a.id,b.best_sort_person_id) order by find_in_set(a.id,b.best_sort_person_id)) e unionselect a.* from p a,p_sort b where a.categories_id = b.categories_id and not find_in_set(a.id,b.best_sort_person_id)
解决方案二:
1、这种东西不建议用一条sql搞定 数据量多 因为肯定会存在not 所以有些肯定不走索引 性能肯定差2、在应用中完成2.1、先查p_sort及p_sort中最前边的2.2、查p 然后[2.1] + [2.2]-[2.1] 这种方式肯定走索引3、p_sort表 数据量大吗 如果大 不建议1,2,3这种 还是再写一个关系表(多一个顺序列)4、ENGINE=MyISAM 改成ENGINE=InnoDB 否则无事务

时间: 2024-11-10 00:50:08

mysql如何按特定id排序的相关文章

mysql in根据查询id排序

mysql in根据查询id排序 mysql in根据查询时,返回结果是自行排序的,如果要按照我们查询的ID进行排序,要用到order by field,下面用几个例子来说明一下mysql in查询排序 例子: www.bitsCN.com SQL:select * from table where id IN (3,6,9,1,2,5,8,7); 这样的情况取出来后,其实,id还是按1,2,3,4,5,6,7,8,9,排序的,但如果我们真要按IN里面的顺序排序怎么办?我们可以用order by

Mysql select in 按id排序实现方法_Mysql

表结构如下: mysql> select * from test; +----+-------+ | id | name | +----+-------+ | 1 | test1 | | 2 | test2 | | 3 | test3 | | 4 | test4 | | 5 | test5 | +----+-------+ 执行以下SQL: mysql> select * from test where id in(3,1,5); +----+-------+ | id | name | +-

两种mysql对自增id重新从1排序的方法

  本文介绍了两种mysql对自增id重新从1排序的方法,简少了对于某个项目初始化数据的工作量,感兴趣的朋友可以参考下 最近老是要为现在这个项目初始化数据,搞的很头疼,而且数据库的Id自增越来越大,要让自增重新从1开始:那么就用下面的方法吧: 方法一:如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数 truncate table 表名 方法二:dbcc checkident ('table_name', reseed, new_reseed_value) 当前值设置

MySQL关于字符串中数字排序的问题分析_Mysql

本文实例讲述了MySQL关于字符串中数字排序的问题.分享给大家供大家参考,具体如下: MySQL字符串相信大家都不陌生,在MySQL字符串排序时经常会遇到一些问题,比如下面要介绍的这个 今天解决了一个关于MySQL字符串排序的很奇怪的问题,在数据里面定义的是varchar类型,实际存放的是Int类型的数据,按一下查询语句进行排序: 将字段*1或者+0可以将MySQL字符串字段按数值排序 如: select * from table where 1 order by id*1 desc; 或者 s

将MySQL查询结果按值排序的简要教程_Mysql

MySQL查询结果如何排序呢?这是很多人都提过的问题,下面就教您如何对MySQL查询结果按某值排序,如果您感兴趣的话,不妨一看. 之前有一个功能修改,要求MySQL查询结果中: id name * * * 1 lucy ... 3 lucy ... 2 lily ... 4 lucy ... 名字为lucy的优先排在前面,百思不得其解,可能有人会说简单 union嘛 或者弄个临时表什么的,其实我也想过,但是本身SQL逻辑就很多了(上面只是简例),再union的话或者临时表可能绕很大的弯路,后来看

php+mysql百万级数据怎么排序

  php+mysql百万级数据如何排序? php+mysql百万级数据分页.因涉及多表多条件联合查询.谁能帮忙优化下面的查询语句. if(empty($wheresql)){ $wheresql="where aid>=(SELECT aid FROM `tj_logs` LIMIT $sqlfirst,1) limit $shownu"; }else{ $wheresql.=" and aid>=(SELECT aid FROM `tj_logs` LIMIT

mysql实现合并同一ID对应多条数据的方法_Mysql

本文实例讲述了mysql实现合并同一ID对应多条数据的方法.分享给大家供大家参考,具体如下: 如 : CREATE TABLE `c_classuser_tab` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Classid` int(11) DEFAULT NULL, `Username` varchar(100) DEFAULT NULL, `studentid` varchar(100) DEFAULT NULL, `College` varchar(1

MySQL分表自增ID问题的解决方法_Mysql

当我们对MySQL进行分表操作后,将不能依赖MySQL的自动增量来产生唯一ID了,因为数据已经分散到多个表中.  应尽量避免使用自增IP来做为主键,为数据库分表操作带来极大的不便.  在postgreSQL.oracle.db2数据库中有一个特殊的特性---sequence. 任何时候数据库可以根据当前表中的记录数大小和步长来获取到该表下一条记录数.然而,MySQL是没有这种序列对象的.  可以通过下面的方法来实现sequence特性产生唯一ID:  1. 通过MySQL表生成ID 对于插入也就

javascript-用if语句和for语句对特定ID执行alert

问题描述 用if语句和for语句对特定ID执行alert 在很多个IMG中找到ID为me,并对它进行onclick. 在很多个IMG中找到ID为me,并对它进行onclick 在很多个IMG中找到ID为me,并对它进行onclick 解决方案 for(i=0,i<img.length,i++){ if(img[i].id='me') alert('me') } 解决方案二: 不太懂你具体要干嘛. 不过这个需求 在很多个IMG中找到ID为me,并对它进行onclick.代码如下: $("im