关于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)
展开
 我来答
手机用户05175
2011-03-07 · 超过43用户采纳过TA的回答
知道答主
回答量:225
采纳率:0%
帮助的人:0
展开全部
现在把详细步骤贴给大家,分享之。

一,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();
}
}
}
theprogrammer
2011-03-06 · TA获得超过1650个赞
知道小有建树答主
回答量:1127
采纳率:0%
帮助的人:470万
展开全部
很多问题可以用OVER PARTITION BY 而不是GROUP BY 解决。

不知亩型道具体表名,迅侍猜列名,但相信可以用
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

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wutian4567268
2011-03-06 · TA获得超过446个赞
知道小有建树答主
回答量:375
采纳率:50%
帮助的人:188万
展开全部
select top n * from table order by sid desc
其中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
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式