关于SQL的问题。有一张表怎么样根据sID分别找到最后一行数据 id name sID 1 a 1 2 b 2 3 c 1 4 d 2
也就是说要找c和d的记录,求高手指教其实这个表是一个简单的表,我只是想弄明白过程,C和D是我不知道的,因为表太大,具体的C和D是要通过查找的,也就是说我想弄明白一张表里面...
也就是说要找c和d的记录,
求高手指教
其实这个表是一个简单的表,我只是想弄明白过程,C和D是我不知道的,因为表太大,具体的C和D是要通过查找的,也就是说我想弄明白一张表里面有多条,其中有些数据对应的外键ID相同,我就想根据相同的外键ID分别找到它们最后的一条数据,如外键有 2 4 6,那么2 4 6都对应了多条数据,我要分组把它们的最后一条信息找出来
我想出来了
select * from table where sID in (select max(id) from table group by sID) 展开
求高手指教
其实这个表是一个简单的表,我只是想弄明白过程,C和D是我不知道的,因为表太大,具体的C和D是要通过查找的,也就是说我想弄明白一张表里面有多条,其中有些数据对应的外键ID相同,我就想根据相同的外键ID分别找到它们最后的一条数据,如外键有 2 4 6,那么2 4 6都对应了多条数据,我要分组把它们的最后一条信息找出来
我想出来了
select * from table where sID in (select max(id) from table group by sID) 展开
3个回答
展开全部
现在把详细步骤贴给大家,分享之。
一,JDBC-ODBC桥的方法,这种方法最简单了。
1,新建一个数据库,为student吧,再在其中新建一张表命名为info,添加一些数据(方便观察效果),下面我们饥链配置数据源
开始----控制面板----管理工具----数据源-----添加----选中“SQL Server”----完成
把默认的数据库改为student。点“下一步”----完成----“测试数据源”,如果提示成功,OK,数据源配置好了!代码如下:import java.sql.*;
public class q
{
public static void main(String[] args)
{
String sql;
Connection conn;
Statement stmt;
ResultSet rs;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:student";
String user="sa";
String password="";
conn= DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
sql="select * from info";
rs=stmt.executeQuery(sql);
while(rs.next())
{
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
}
rs.close();
stmt.close();
conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}编译运行如图:上面的结果是我info里面的字段。OK?成功了吧?二,JDBC连接1,下载jdbc:
下载:SQL Server 2000 SP3,同样到Microsoft的网站去下载升级包,~~~~~~~~~~~~~~~~~~关键开始~~~~~~~~~~~~~~~~~~~~,下载其中的chs_sql2ksp3.exe,注意下载下来的是chs_sql2ksp3.exe文件,双击它选择罩握安装到一个目录时是在解压,然后你还要到那个目录下双击setup.bat批处理文件才是开始安装(应该说是升级)!!!具体下载地址是:
~~~~~~~~~~~~~~~~~~~~关键结束~~~~~~~~~~~~~~~~~~~~~~~~~注:我一直是这个原因,装错补订了,我曾经装过SP3a,SP4,结果都不行!2,安装JDBC,把其安装目物肢庆录下的lib下的三个文件添加到classpath中,这个网上都有很多。我的是:C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;添加完成后,安装SP3补订,也就是刚才下的那个文件,可能需要重启,我给忘了。3,现在就是代码了,如下:import java.sql.*;public class L
{
public static void main(String[] args)
{
String sql;
Connection conn;
Statement stmt;
ResultSet rs;
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";
String user="sa";
String password="";
conn= DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
sql="select * from info";
rs=stmt.executeQuery(sql);
while(rs.next())
{
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
}
rs.close();
stmt.close();
conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
一,JDBC-ODBC桥的方法,这种方法最简单了。
1,新建一个数据库,为student吧,再在其中新建一张表命名为info,添加一些数据(方便观察效果),下面我们饥链配置数据源
开始----控制面板----管理工具----数据源-----添加----选中“SQL Server”----完成
把默认的数据库改为student。点“下一步”----完成----“测试数据源”,如果提示成功,OK,数据源配置好了!代码如下:import java.sql.*;
public class q
{
public static void main(String[] args)
{
String sql;
Connection conn;
Statement stmt;
ResultSet rs;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:student";
String user="sa";
String password="";
conn= DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
sql="select * from info";
rs=stmt.executeQuery(sql);
while(rs.next())
{
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
}
rs.close();
stmt.close();
conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}编译运行如图:上面的结果是我info里面的字段。OK?成功了吧?二,JDBC连接1,下载jdbc:
下载:SQL Server 2000 SP3,同样到Microsoft的网站去下载升级包,~~~~~~~~~~~~~~~~~~关键开始~~~~~~~~~~~~~~~~~~~~,下载其中的chs_sql2ksp3.exe,注意下载下来的是chs_sql2ksp3.exe文件,双击它选择罩握安装到一个目录时是在解压,然后你还要到那个目录下双击setup.bat批处理文件才是开始安装(应该说是升级)!!!具体下载地址是:
~~~~~~~~~~~~~~~~~~~~关键结束~~~~~~~~~~~~~~~~~~~~~~~~~注:我一直是这个原因,装错补订了,我曾经装过SP3a,SP4,结果都不行!2,安装JDBC,把其安装目物肢庆录下的lib下的三个文件添加到classpath中,这个网上都有很多。我的是:C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;添加完成后,安装SP3补订,也就是刚才下的那个文件,可能需要重启,我给忘了。3,现在就是代码了,如下:import java.sql.*;public class L
{
public static void main(String[] args)
{
String sql;
Connection conn;
Statement stmt;
ResultSet rs;
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";
String user="sa";
String password="";
conn= DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
sql="select * from info";
rs=stmt.executeQuery(sql);
while(rs.next())
{
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
}
rs.close();
stmt.close();
conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
展开全部
很多问题可以用OVER PARTITION BY 而不是GROUP BY 解决。
不知亩型道具体表名,迅侍猜列名,但相信可以用
SELECT MAX(...) OVER (PARTITION BY sID)
FROM ...
WHERE sID IN('c'谈旦,'d')
不知亩型道具体表名,迅侍猜列名,但相信可以用
SELECT MAX(...) OVER (PARTITION BY sID)
FROM ...
WHERE sID IN('c'谈旦,'d')
追问
其实这个表是一个简单的表,我只是想弄明白过程,C和D是我不知道的,因为表太大,具体的C和D是要通过查找的,也就是说我想弄明白一张表里面对应的外键ID相同,我就想根据相同的外键ID分别找到它们最后的一条数据,不如外键有 2 4 6,那么2 4 6都对应了多条数据,我要分组吧它们的最后一条找出来
追答
那样你把WHERE sID IN('c','d') 语句去掉就可以了。
MAX(。。。)里面应该是能区分出最后一个的列,比如插入时间,或者顺序号。
参考资料: http://msdn.microsoft.com/en-us/library/ms189461.aspx
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select top n * from table order by sid desc
其中n为数字坦睁兆,早辩输入多让租少就查出多少条
其中n为数字坦睁兆,早辩输入多让租少就查出多少条
追问
可是我只能查出一条d的记录,如果TOP2也只能将b和d记录查出来,
我现在是要将c和d的记录一起查出来,
其实我是想用分组在讲他们过滤,但我试了几种我找到的方法都不行
追答
查c和d用下列语句
select top n * from table order by id desc
top n就是查出select语句结果的前n条,具体那几条就要看你的sql语句排序了,上面这句是按照id降序排量,所以出来的是cd,id 3 ,4
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询