如何查没有主键(也没有可以起相同标识)的表的最后一条记录

菲力蒲LY 2013-11-12 11:25:15
用sql语言,来查没有主键,也找不到能用来顺序标识的记录行,希望别改变数据表内容。比如说在前添加序列号等等。欢迎并谢谢大家的解答。
...全文
165 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
m0_52166874 2021-07-16
  • 打赏
  • 举报
回复 1

select (@i:=@i+1) as i,tablename.* from tablename,(select @i:=0) as it order by i desc limit 1

菲力蒲LY 2013-11-12
  • 打赏
  • 举报
回复
对的,但有个前提是不能改变原本的字段数,像二楼说的,就改变了结构。 如果该表的字段数在其他地方有用,通过这次修改,会造成错误哦。 感谢您!
發糞塗牆 2013-11-12
  • 打赏
  • 举报
回复
你既然说了没有任何标识列,那什么方法找都是说的过去的,表的存储结构本身就没有顺序
菲力蒲LY 2013-11-12
  • 打赏
  • 举报
回复
select top 1 * from (select rn =row_number() over (order by getdate()) ,* from tb) tb_1 order by rn desc 这个方法是能找到,但是改变了原数据库的结构,在数据库的第一列增添了一列。
LongRui888 2013-11-12
  • 打赏
  • 举报
回复
如果你用的是sql server 2005及以后版本的话能查,但是这个只是逻辑上的最好一条,比如:
select *
from
(
select *,
       count(*) over(PARTITION by 1) as record_count,  --表中的记录数
       ROW_NUMBER() over(order by @@servername) as rownum  --人工的行号
from sys.objects
)t
where rownum = record_count
小魚人 2013-11-12
  • 打赏
  • 举报
回复
select top 1 * from (select rn =row_number() over (order by getdate()) ,* from tb) tb_1 order by rn desc 是不是這樣?
發糞塗牆 2013-11-12
  • 打赏
  • 举报
回复
没办法,sql的存储结构决定了
  • 打赏
  • 举报
回复
有无聚集索引?有聚集索引可以通过order by 聚集索引字段 desc实现。没得你就自己想办法吧。另外,这么蛋疼的结构,谁想出来的?可以让老板炒掉他了。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧