C# SQL Server-每天仅获取1个主键查询

C# SQL Server-每天仅获取1个主键查询,c#,sql-server,winforms,C#,Sql Server,Winforms,我想为我的winform做一个报价,我总共有100条记录。我是这样创造的 CREATE TABLE quote ( quote_id numeric identity primary key, quote_quote varchar(500) not null, quote_from varchar(100) not null, ) SELECT TOP 1 quote_quote,quote_from FROM quotes ORDER BY NEWID() 现在,当我在winform中显

我想为我的winform做一个报价,我总共有100条记录。我是这样创造的

CREATE TABLE quote (
quote_id numeric identity primary key,
quote_quote varchar(500) not null,
quote_from varchar(100) not null,
)
SELECT TOP 1 quote_quote,quote_from FROM quotes ORDER BY NEWID()
现在,当我在winform中显示它时,我得到了我想要的显示,但我认为每天都会有一个新的报价取代另一个报价是很好的,而不仅仅是每次运行都会显示一个不同的报价。我这样质疑

CREATE TABLE quote (
quote_id numeric identity primary key,
quote_quote varchar(500) not null,
quote_from varchar(100) not null,
)
SELECT TOP 1 quote_quote,quote_from FROM quotes ORDER BY NEWID()

我每天该怎么做,该查询将触发或任何其他建议?

有几种方法可以做到这一点。一个选项是以下选项,它将每天循环使用一个新报价:

 SELECT quote_quote, quote_from FROM QUOTE
 ORDER BY QUOTE_ID
 OFFSET (SELECT CAST(GETDATE() AS INT) % COUNT(*) FROM QUOTE) ROWS
 FETCH NEXT 1 ROW ONLY;

子查询
SELECT CAST(GETDATE()AS INT)%COUNT(*)FROM QUOTE
将当前日期转换为整数(从1900-01-01起的天数),并根据QUOTE表中的行数进行调整。这将是一个介于0和N-1之间的数字,其中N是引号表中的行数。查询被这一行数抵消,只获取一行;这样做的效果是一天一次循环引用。

有几种方法可以做到这一点。一个选项是以下选项,它将每天循环使用一个新报价:

 SELECT quote_quote, quote_from FROM QUOTE
 ORDER BY QUOTE_ID
 OFFSET (SELECT CAST(GETDATE() AS INT) % COUNT(*) FROM QUOTE) ROWS
 FETCH NEXT 1 ROW ONLY;

子查询
SELECT CAST(GETDATE()AS INT)%COUNT(*)FROM QUOTE
将当前日期转换为整数(从1900-01-01起的天数),并根据QUOTE表中的行数进行调整。这将是一个介于0和N-1之间的数字,其中N是引号表中的行数。查询被这一行数抵消,只获取一行;其效果是一天一次循环引用。

是否要显示一整天的单个引用,甚至用户多次打开和关闭该windows应用程序?是的。我就是这么想的。你想显示一整天的单一报价,甚至用户多次打开和关闭windows应用程序吗?是的。我就是想要这个。哇,多么天才的解决方案!!!我什么也说不出来了,首先想到的是触发器,存储过程。哇,多么天才的解决方案啊!!!我什么也说不出来了,我脑子里首先想到的是触发器,存储过程。