注册 登录
编程论坛 ASP.NET技术论坛

[求助]SQL 语句中取最后一条记录ID的语句怎么写

airfei 发布于 2007-04-25 14:53, 12323 次点击
SQL 语句中取最后一条记录ID的语句怎么写?请指点一下
11 回复
#2
冰镇柠檬汁儿2007-04-25 14:54
select max(id) from table where ...
#3
冰残剑2007-04-25 14:55
select top 1 ID from [yourtable] order by ID desc
#4
airfei2007-04-25 15:22
回复:(冰残剑)select top 1 ID from [yourtable] o...
问题解决,谢谢你.我还想问你一下.
我用的是dataview,在项模板中添加了个图片按钮,同时启动了dataview的分页,一页显示一幅图片按钮.我想当我点击这幅图片的时候就转到另一个页面中.
我于是就编辑了图片按钮的事件,
protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
{
Response.Redirect("ImgNews.aspx?ImgID=");//就是这里不知道怎么取我在dataview中选中的图片的ID.
}
你能帮帮我吗?
#5
djx5202007-04-25 15:29
select max(id) from table where ...
这句有时候是不行的,要是id最后一条不是最大的呢


select top 1 ID from [yourtable] order by ID desc 这个也是一样
id最后一条不是最大的就是错的

最保险的办法是用游标
#6
bygg2007-04-25 16:22
以下是引用airfei在2007-4-25 15:22:48的发言:
问题解决,谢谢你.我还想问你一下.
我用的是dataview,在项模板中添加了个图片按钮,同时启动了dataview的分页,一页显示一幅图片按钮.我想当我点击这幅图片的时候就转到另一个页面中.
我于是就编辑了图片按钮的事件,
protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
{
Response.Redirect("ImgNews.aspx?ImgID=");//就是这里不知道怎么取我在dataview中选中的图片的ID.
}
你能帮帮我吗?


只要你能取出相应的图片进行显示就可以了.
你可以将你的图片按一定的格式进行编号命名,取出图片读取时就可以将图片的ID放到一个变量中..后面就可以引用了.

#7
airfei2007-04-25 16:49
回复:(djx520)select max(id) from table where .....
我是用的dataview+sqldatasource,取图片时我就用了绑定<%# Eval('ImgPath')%>
怎样将图片按一定的格式进行编号命名,取出图片读取时就可以将图片的ID放到一个变量中?能具体说说吗?谢谢!
我有个ImgID是保存图片ID的
#8
球球2007-04-25 17:12
select @@identity
#9
airfei2007-04-25 17:22
回复:(airfei)回复:(djx520)select max(id) fro...
这个是什么意思,能详细点说说吗?
#10
铲铲2007-04-26 06:07
上述都不是最佳解决。
对于SQL Server数据库,它提供了两个系统属性供取回最后一次插入时主键值。一个是SCOPE_IDENTITY,另一个是@@IDENTITY。
SCOPE_IDENTITY记住的是在一个应用实例范围内的主键标识。假如插如操作和取主键值的操作使用了不同的连接,则它们处于不同的实例,只能使用@@IDENTITY来获取最后一次插入的主键值。

这里还要提到一点,通常插入操作和取主键值的操作时分开的,@@IDENTITY仅记住最后一次插入操作时产生的主键值,这时应该考虑并发问题,假如你的程序是并发访问数据库,在本实例中插入完毕即将取回@@IDENTITY之间,其他实例可能会执行插入操作,这时候@@IDENTITY取到的就是其他实例插入的主键值。因此这里应该考虑将其作为一个事务来处理。

对于Access的话,会比较棘手。上述方法可以在一定程度上使用,但是都是不完备的(不能保证正确)。还有一种变相的解决办法是,在一个表中除了主键,还有一个或若干列合在一起其值是唯一的,通过这些“候选键”来间接找到主键的值。“候选键”本身就可代表一行,因此它是完备的,并可以正确找到主键,而且也避免了并发问题。
举个例子:假如会员系统用户名要求是唯一的。那么用户名可以作为候选键的一种。当插入成功后,又再通过用户名查询即可查到主键ID的值。虽然它是完备的,但有额外的要求是其有些使用限制,在者就是写程序时会比较繁琐些。
#11
djx5202007-04-27 14:55
我用的是dataview,在项模板中添加了个图片按钮,同时启动了dataview的分页,一页显示一幅图片按钮.我想当我点击这幅图片的时候就转到另一个页面中 你能在模板列的图片按钮上找到ImageButton2_Click时间我还真是服了你呢

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
//在绑定图片按钮上加上CommandArgument=<%#Eval("ImgID") %>属性
//selecty是你的图片按钮的commandname的值
if (e.CommandName == "selecty")
{
Response.Redirect("ImgNews.aspx?ImgID=e.CommandArgument");//
}

}
#12
airfei2007-04-27 23:52
回复:(djx520)我用的是dataview,在项模板中添加了个...
非常感谢大家的回答.问题解决了.谢谢
1