我在尝试从SQL表中提取最新行时遇到了一些麻烦。用户可以填写费用表单,并将ASP.NET文本框中的数据发送到数据库,但是当用户提交更多数据时,我无法提取最新数据并使用该数据填充文本框。我使用GUID作为ID字段。我已将userID
存储在Session["New"]
。
这是我的SQL语句:
string str = "select * from CashFlow where userID='" + Session["New"].ToString() + "'";
答案 0 :(得分:1)
在数据库中创建名为table <- aggregate( .~ obs5, DF, function(x) c(mean = mean(x), sd = sd(x)))
和CreateDate
的新列。
在表格集UpdateDate
和UpdateDate
到CreateDate
中进行插入时。当您对表格中的行进行更新时,只需将DateTime.Now
设置为UpdateDate
之后你将需要像这样的查询,为最后创建:
DateTime.Now
以及最后更新的
select * from CashFlow order by CreateDate desc
答案 1 :(得分:0)
数据库通常没有“最新”的概念,因此如果您的表格中没有包含某种时间戳,则无法获得最新记录。
修复 - 在记录中添加某种时间戳字段,以便能够在该字段上“排序”。例如,您可以考虑添加“自动增量”字段(您必须将其添加到PK - mysql auto-increment on a non-primary key)。
旁注 - 请使用参数化查询,而不是使用字符串连接构建查询 - Parameterized Query for MySQL with C#
近似样本(假设您有TimeStamp字段):
select * from CashFlow order by UpdateDate desc
答案 2 :(得分:0)
听起来你倒退了整个问题。使用GUID的关键是ID由用户(或本例中的应用程序)生成。
鉴于GUID是由应用程序生成的,最后一个ID与上次生成的ID相同。
因此,只需在内存中使用一个,而不是使用数据库查询来处理你知道的事情。
答案 3 :(得分:0)
尝试使用NEWSEQUENTIALID()生成GUID,然后当ID为GUID时,您可以从数据库中获取最后一行。因为它创建的GUID大于自Windows启动以来该指定计算机上此函数先前生成的任何GUID。
这是一个例子。 CREATE TABLE myTable(ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID());
答案 4 :(得分:0)
您可以在排序和检查用户名
后选择前1行string str = "SELECT TOP 1 OrderNr FROM Orders Where CustomerName = 'Maria' ORDER BY OrderNr DESC;";
只需根据需要对字符串进行一些调整,但这应该可以让最后一行说出客户。
答案 5 :(得分:0)
insert into CashFlow (Column names)
OUTPUT inserted.userID
values
(inserted values in Column )
store Return value in variable For fetch Latest Record By userID