【问题标题】:Add a Record To Last Of The Table [closed]将记录添加到表的最后 [关闭]
【发布时间】:2013-10-26 10:16:25
【问题描述】:

当我使用下面的查询向表中添加新记录(未知)时,新记录添加到表的第一个。 我想将新记录添加到表的最后。

这是我的代码:

begin
insert   into  TBLCrowler (Url,Title,ParentId,HasData) values (@Url,@Title,@ParentId,@HasData) 
end

【问题讨论】:

  • 在关系数据库表中没有“第一”或“最后”行。

标签: sql sql-insert


【解决方案1】:
select top 1 CatId, Title, ParentId, Url, CrawlerCheck from TBLCrowler where CatId=(Select min(CatId) from TBLCrowler where CrawlerCheck=1)
update TBLCrowler set CrawlerCheck=2 , HasData=2
where CatId=(Select min(CatId) from TBLCrowler where CrawlerCheck=1)

【讨论】:

    【解决方案2】:

    好的,再次进入突破口。 您正在使用关系数据库。它不是工作表,也不是 Word 文档中的矩形单元格数组。它的强大之处在于能够以最有效的方式存储和检索记录。

    排序或者通过索引隐含,DBMS 可以随意忽略它,并且无论如何都可以更改,或者通过 order by 语句明确要求

    如果您希望事物按添加到表中的时间排序,则添加 created_at 列并在执行插入时填充它。

    然后,当您从中选择时,您将Order By Created_At 添加到您的选择语句中。

    如果您希望该排序“快速”,您可以在 Created_At 列上添加一个索引,然后 DBMS 将勇敢地尝试使用该索引以避免完全通过排序的成本。

    退后一步,想一想您将如何编写 DBMS。您隐含的有序性的成本是多少。对“最后一个”表中除“最后一个”记录之外的任何记录的任何更改都意味着“在”它“之后”将每个表中的每条记录都重写到磁盘。插入更糟糕,删除也同样糟糕,这还没有考虑到不同的记录占用不同的空间。

    所以,如果你能找到它们,那就先把它们扔进垃圾箱……

    【讨论】:

    • 我在这里找到了一种方法
    • 我是耳熟能详的伙伴,事实上是激动的。那你打算怎么做呢?
    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    相关资源
    最近更新 更多