【问题标题】:SQL FIFO STACK using two tables使用两个表的 SQL FIFO STACK
【发布时间】:2023-03-26 14:01:01
【问题描述】:

我在一个名为 FIFOStack 的表中有两个字段 Position 和 SerialNumber。我需要的是从我的表 SerialNum 中提取最近的 100 个序列号。随着新序列号的填充,存储过程会将新序列号拉入 FIFOStack 表中,并且不同的存储过程将移出最旧的条目。

我需要一些关于该过程的解释并帮助编写存储过程。谢谢

【问题讨论】:

  • 一个“FIFO 栈”被称为一个“队列”

标签: sql stack fifo


【解决方案1】:

您可以创建一个功能相同的视图,而不是不断地使用存储过程管理另一个表,并且只需要在查询时执行任何工作。示例:

CREATE VIEW MyView
AS

SELECT TOP 100 * FROM FIFOStack
ORDER BY Position DESC

因此,只要您需要此列表,您只需:

SELECT * FROM MyView

并且它将始终返回来自FIFOStack 的最新 100 行,无需进行任何其他更改。

【讨论】:

  • 将存储在表中的数据将被传输到 PLC 进行一些错误检查。 FIFO 数据必须是最后 100 个。我认为使用 TOP 可以根据百分比获得最高排名。
  • 不,TOP X 只是表示“取你找到的第一个 X 数量”
  • 谢谢!在没有人工干预的情况下,我仍然需要数据存在于该表中。就最新条目而言,假设第 15 行。如果我 SELECT TOP 10 * FROM MyTable,我在 15 处看不到最新条目,只有条目 1-10。
  • 你需要通过一些东西来订购它。如果您的序列号是递增的,则可以按此顺序订购,否则您需要日期戳才能订购。如我的回答中所述,您需要按降序进行。或通过您的 Position 字段。
  • 我认为你没有理解:新表是view,它始终是最新的无论如何,除非你没有完全解释清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
相关资源
最近更新 更多