mysql: select count until?

Sunhk_25 2014-04-07 03:08:43
我想查询一个id按顺序wait_order排序后,count前面有多少个。
mysql 有until这样的语句吗?
select count(*) from reserves order wait_order until id = 3;

`reserves` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL DEFAULT '0',
`wait_order` smallint(4) NOT NULL DEFAULT '0'
}
id, member_id, wait_order
1, 3, 1
2, 3, 3
3, 1, 2
4, 2, 4


...全文
67 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sunhk_25 2014-04-08
  • 打赏
  • 举报
回复
引用 6 楼 benluobobo 的回复:
不好意思 还是没能看懂你的需求,你能用表格列出你需要的结果么
我要的结果就是2(id=3排在第二位). 这是我现在的sql: SELECT COUNT(*) FROM reserves WHERE wait_order <= (select wait_order from reserves where id = 3);
benluobo 2014-04-08
  • 打赏
  • 举报
回复
不好意思 还是没能看懂你的需求,你能用表格列出你需要的结果么
Sunhk_25 2014-04-08
  • 打赏
  • 举报
回复
引用 2 楼 benluobobo 的回复:
贴出你的数据和需要的结果
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`) ); 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就可以查询出来了;
Sunhk_25 2014-04-08
  • 打赏
  • 举报
回复
引用 1 楼 ACMAIN_CHM 的回复:
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
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`) ); 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就可以查询出来了;
Sunhk_25 2014-04-08
  • 打赏
  • 举报
回复
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`) ); 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就可以查询出来了;
benluobo 2014-04-08
  • 打赏
  • 举报
回复
贴出你的数据和需要的结果
ACMAIN_CHM 2014-04-07
  • 打赏
  • 举报
回复
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧