热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

取数据库里一列的最大值

我想从message_id(int类型)取最大值,用这条语句selectmax(message_id)asmaxidfrommessage出现一下错误[Microsoft][SQLS
我想从message_id(int类型)取最大值,用这条语句select max(message_id) as maxid from message
出现一下错误
[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]列 'message.message_id' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。 
在网上搜索错误找到解决方法,改语句为:use message select max(message_id) as maxid from message
没有那个错误了 又出现一下错误:
[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]未能在 sysdatabases 中找到数据库 'message' 所对应的条目。没有找到具有该名称的条目。请确保正确地输入了名称。 
我要崩溃了 高手 救救我

13 个解决方案

#1


select max(message_id) as maxid from message

--语法没有错误,假定message是表名,message_id是message表中的字段。

#2


message 是什么? 表还是视图? 

单独的一条:
select max(message_id) as maxid from message

本身是没有任何错误的.


#3


如果你的查询指向的是一个视图, 或者是包含计算列的表, 则可能这个视图本身有问题, 或者计算列的公式有问题.


你可以
select * from message 看看有没有错.

#4


message 是个表 message_id 是列值
我select *from message 没有任何错误

#5


message_id 这个名称一定写错了,好好看一下。

#6


select max(message_id) as maxid from message应该不会有问题啊

#7


select max(message_id) as maxid from message

我一向这么写,好象没有问题

顺便关注老大的回答

#8


這樣的寫法是對的,如果message是表的話,那確認一下,message_id是不是表message的字段,還是你自己打錯了?

#9


message 是这个表,message_id是表里的字段,并且是主键,正如上面说的
我select * from message 没有任何错误,但是要是用select max(message_id) as maxid from message 就有Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]列 'message.message_id' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。

#10


up

#11


这个语句应该没有问题啊,我也是一直都是这么写的。

#12


我在网上找到了解决办法 就是在后面加上group
原语句变为:select max(message_id) as maxid from message group by message_id
这样就没有错误了,但是有别的错误 我把代码写一下:
                           int currentid=1;
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
            String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mylove"; 
String user="sa"; 
String password="sa"; 
Connection cOnn= DriverManager.getConnection(url,user,password); 
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select max(message_id) as maxid from message group by message_id"; 
ResultSet rs=stmt.executeQuery(sql); 
rs.next(); currentid=rs.getInt("maxid")+1;
rs.close();
Integer c=new Integer(currentid);
InitialContext ctx=new InitialContext();
//ArrayList list=new ArrayList();
Object obj =ctx.lookup("messageprocess");
                            …………………………
这次没有上面的那个错误了,可是他就是总把message_id=1 向数据库里插入, 当数据库里有id=1的数据后 就报错:Entity with primary key 1 already exists 
不能达到我想要的目的,取message_id最大值,然后+1,把下一个数据插入数据库

#13


不会,我一直都是直接使用MAX没有GROUP也没有问题的

推荐阅读
author-avatar
-吴奇润
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有