解决方案 »
- xml和数据库mysql
- 求助:WIN2003重启系统后,MYSQL4.1.22启动异常
- 在线等,高手继续进来指导下。。
- 问下,如何在mysql中查询当天的数据
- MYSql 通过存储过程删除重复数据(只保留一条)
- mysql cluster中建表为什么不能建引擎是ndbcluster的?
- 在access中表中数据导出为文本文件的问题?
- 关于mysql innodb 数据的恢复问题
- mysql 两个字段拼起来查怎么做
- 求解:关于mysql触发器的问题
- 请问mysql-installer-web-community的mysq和mysql-installer-communityl的版本的区别,谢谢。
- sql中,主键是自增的,它是另一个表的外键,外键插入数据如何才能和主键一致?
参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL DEFAULT '0',
`wait_order` smallint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
);
CREATE TABLE `reserves` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL DEFAULT '0',
`wait_order` smallint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 |
insert into reserves(id,member_id,wait_order) values(1,3,1);
insert into reserves(id,member_id,wait_order) values(2,3,3);
insert into reserves(id,member_id,wait_order) values(3,1,2);
insert into reserves(id,member_id,wait_order) values(4,2,4);
想要结果:按wait_order排序后id=3排在第二位。
因为还有别的字段比如wait_status,所以wait_order的数字本身并不代表实际排在第几位。
SELECT COUNT(*) FROM reserves WHERE wait_order <= (select wait_order from reserves where id = 3);
这是我现在用的sql,所以想问一下有没有更方便的写法,就像Dbase的for和while的区别。
for是循环整体,while是只要不满足直接结束。
所以如果像用select count(*) from reserves order wait_order while<>3的结果加1就可以查询出来了;
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL DEFAULT '0',
`wait_order` smallint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
);
CREATE TABLE `reserves` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL DEFAULT '0',
`wait_order` smallint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 |
insert into reserves(id,member_id,wait_order) values(1,3,1);
insert into reserves(id,member_id,wait_order) values(2,3,3);
insert into reserves(id,member_id,wait_order) values(3,1,2);
insert into reserves(id,member_id,wait_order) values(4,2,4);
想要结果:按wait_order排序后id=3排在第二位。
因为还有别的字段比如wait_status,所以wait_order的数字本身并不代表实际排在第几位。
SELECT COUNT(*) FROM reserves WHERE wait_order <= (select wait_order from reserves where id = 3);
这是我现在用的sql,所以想问一下有没有更方便的写法,就像Dbase的for和while的区别。
for是循环整体,while是只要不满足直接结束。
所以如果像用select count(*) from reserves order wait_order while<>3的结果加1就可以查询出来了;
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL DEFAULT '0',
`wait_order` smallint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
);
CREATE TABLE `reserves` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL DEFAULT '0',
`wait_order` smallint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 |
insert into reserves(id,member_id,wait_order) values(1,3,1);
insert into reserves(id,member_id,wait_order) values(2,3,3);
insert into reserves(id,member_id,wait_order) values(3,1,2);
insert into reserves(id,member_id,wait_order) values(4,2,4);
想要结果:按wait_order排序后id=3排在第二位。
因为还有别的字段比如wait_status,所以wait_order的数字本身并不代表实际排在第几位。
SELECT COUNT(*) FROM reserves WHERE wait_order <= (select wait_order from reserves where id = 3);
这是我现在用的sql,所以想问一下有没有更方便的写法,就像Dbase的for和while的区别。
for是循环整体,while是只要不满足直接结束。
所以如果像用select count(*) from reserves order wait_order while<>3的结果加1就可以查询出来了;
这是我现在的sql:
SELECT COUNT(*) FROM reserves WHERE wait_order <= (select wait_order from reserves where id = 3);