如何取sql最大值?

g13051407191 2009-10-05 05:49:55
id
1300220
1300221
1300224
1300700
1300400
1300200
1400001
1400023
1400035
1400021
1400043
1400075
1500032
1500023
1600012
等等.....

如何取id中13开头的最大值 1300700那个
...全文
182 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
longq121 2009-10-05
  • 打赏
  • 举报
回复
如楼上述说
Allsochen 2009-10-05
  • 打赏
  • 举报
回复
直接是用哪个数据库的Max函数就可以解决了
SELECT MAX(id) FROM t WHERE id >= 1300000 AND id < 1400000;
快乐的2 2009-10-05
  • 打赏
  • 举报
回复
SELECT MAX(id) FROM t WHERE id>=1300000 and id<1400000;
阿_布 2009-10-05
  • 打赏
  • 举报
回复
java中:

public class TestGetMax {

public static void main(String[] args) {
int[] arr = {1300220,1300221,1300224,1300700,1300400,1300200,1400001,1400023,1400035,1400021,1400043,1400075,1500023,1600012};
System.out.println(getBeginMax(arr,13,5));
}
/*
* begin:开始的数字
* s:除开头数字的位数
*/
public static int getBeginMax(int[] arr,int begin,int s){
int[] nums = arr;
int temp = 0;
int j = 0;
int ss = (int)Math.pow(10, s);
for(int i=0;i<nums.length;i++){
if(nums[i]/100000==13){
int n = nums[i]%ss;
if(n>j){
j = n;
temp = nums[i];
}
}
}
return temp;
}
}
阿_布 2009-10-05
  • 打赏
  • 举报
回复
如果是从数据库中取的话:

mysql> select * from t;
+---------+
| id |
+---------+
| 1300220 |
| 1300221 |
| 1300224 |
| 1300700 |
| 1300400 |
| 1300200 |
| 1400001 |
| 1400023 |
| 1400035 |
| 1400021 |
| 1400043 |
| 1400075 |
| 1500032 |
| 1500023 |
| 1600012 |
+---------+
15 rows in set (0.00 sec)

mysql> select max(id) as mid from t
-> where floor(id/100000)=13;
+---------+
| mid |
+---------+
| 1300700 |
+---------+
1 row in set (0.00 sec)

mysql数据库,其他数据库应该也兼容。
ctwei86 2009-10-05
  • 打赏
  • 举报
回复
不好意思,当成数据库了,同意9楼!
ctwei86 2009-10-05
  • 打赏
  • 举报
回复
select top 1 from 表名 where id between 1300 and 1400 order by id desc
amdgaming 2009-10-05
  • 打赏
  • 举报
回复
有一点小错误,改下,楼主你看看。。

int getMax(int[] ids) {
int max = 0;
for (int i = 0; i < ids.length; i++) {
if (ids[i] < 1300000 && ids[i] >= 1400000) {
continue;

}
if (ids[i] > max)
{
max = ids[i];
}

}
return max;

}
amdgaming 2009-10-05
  • 打赏
  • 举报
回复

如果你那传过来 是数组的话,我给你写个 伪代码 这个效率 还可以

int getMax(int[] ids) {
int max = 0;
for (int i = 0; i < ids.length; i++) {
if (ids[i] < 1300000 && ids[i] >= 1400000) {
continue;

}
max = ids[i];

}
return max;

}

小一郎 2009-10-05
  • 打赏
  • 举报
回复
排序不就行了吗?
bolink5 2009-10-05
  • 打赏
  • 举报
回复
LZ 问的问题很奇怪啊,一般来说数据库中的主键id是自动增长的
select max(id) 就可以拿到最大值啊
LZ你还是把问题描述清楚吧
amdgaming 2009-10-05
  • 打赏
  • 举报
回复
是其他 不是等他 笔误 ,sorry
amdgaming 2009-10-05
  • 打赏
  • 举报
回复

如果有等他也好办,

你 先做个判断 把 大于1300000 小于1400000先 存到你的 数组中
然后 对这个 做个 Arrays.sort排序下, 最后1个就是你要的了
amdgaming 2009-10-05
  • 打赏
  • 举报
回复
你这个 不是数据库啊,还有 你 到底要什么??
如何取id中13开头的最大值 1300700那个
???
g13051407191 2009-10-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 g13051407191 的回复:]
id
1300220
1300221
1300224
1300700
1300400
1300200
1400001
1400023
1400035
1400021
1400043
1400075
1500032
1500023
1600012
等等.....

                    如何取id中13开头的最大值 1300700那个
[/Quote]

他传过来的值是14呢 15 16呢
amdgaming 2009-10-05
  • 打赏
  • 举报
回复
order by id desc
如果是mysql 再加limit 0,1
就可以了。如果是sqlserver就加top 1

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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