当我使用下面的查询向表中添加新记录(未知)时,新记录添加到表的第一个。 我想在表的最后添加新记录。
这是我的代码:
begin
insert into TBLCrowler (Url,Title,ParentId,HasData) values (@Url,@Title,@ParentId,@HasData)
end
答案 0 :(得分: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)
答案 1 :(得分:0)
好的,再次进入违规行为。 您正在使用关系数据库。它不是工作表,它不是word文档中的矩形单元格数组。它的强大功能依赖于能够以最有效的方式存储和检索记录。
订购要么通过索引隐含,DBMS可以自由忽略,也可能无论如何都会改变,或者通过语句明确要求
如果您希望在将它们添加到表中时排序,则添加created_at列并在执行插入时填充它。
然后当您从中选择时,将Order By Created_At
添加到您的选择语句中。
如果您希望该订单“快速”,您可以在Created_At列上添加一个索引,然后DBMS将勇敢地尝试使用该索引,以避免完整传递排序的成本。
退一步思考一下如何编写DBMS。隐含有序性的成本是多少?除“最后一个”表中的“最后”记录之外的任何更改都意味着将每个表中的每个记录重写到磁盘后面。插入更糟糕,删除也很糟糕,并且不考虑不同的记录占用不同的空间。
如果你能找到它们,那么首先扔进垃圾箱,然后扔进垃圾箱......