在SQL中限制一行表并在Top上插入新行

时间:2015-07-03 09:09:16

标签: sql insert limit rows

我有一个 SQL Server数据库表:History_KH
它看起来像:

History_KH Table

现在我想限制此表的行号(例如:200行)
当我从代码插入新行时,它将插入到表的顶部。这意味着:在数据库表的顶部插入新行,将删除超过200个计数的旧行 请支持我

2 个答案:

答案 0 :(得分:3)

您无法真正限制表格来修复固定数量的记录,但您可以摆脱不需要的记录。假设您使用的是SQL-Server

--STEP1 :Do your insert here

--STEP2: Delete older records over 200 ordering by dateTime column
;WITH CTE AS (

  SELECT *, ROW_NUMBER() OVER (ORDER BY DateTime DESC) rn 
  FROM YourTable
)
DELETE CTE WHERE rn > 200

答案 1 :(得分:2)

您甚至没有发布您正在使用的数据库。我假设是mysql。

假设您想按日期时间排序且用户名是唯一的,请使用此更新...

update `History_KH` set `Username` = $myUser, `Datetime` = $myDatetime,
`Datechange` = $myDatechange, `Value` = $myValue where `Username` in 
(select `Username` from `History_KH` order by `Datetime` limit 200)