作者:-吴奇润 | 来源:互联网 | 2024-10-19 15:54
我想从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 个解决方案
select max(message_id) as maxid from message
--语法没有错误,假定message是表名,message_id是message表中的字段。
message 是什么? 表还是视图?
单独的一条:
select max(message_id) as maxid from message
本身是没有任何错误的.
如果你的查询指向的是一个视图, 或者是包含计算列的表, 则可能这个视图本身有问题, 或者计算列的公式有问题.
你可以
select * from message 看看有没有错.
message 是个表 message_id 是列值
我select *from message 没有任何错误
message_id 这个名称一定写错了,好好看一下。
select max(message_id) as maxid from message应该不会有问题啊
select max(message_id) as maxid from message
我一向这么写,好象没有问题
顺便关注老大的回答
這樣的寫法是對的,如果message是表的話,那確認一下,message_id是不是表message的字段,還是你自己打錯了?
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 子句。
我在网上找到了解决办法 就是在后面加上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,把下一个数据插入数据库
不会,我一直都是直接使用MAX没有GROUP也没有问题的