如何在SQL中完成这些任务?

时间:2010-08-25 23:00:27

标签: sql sql-server tsql

  1. 我有一个表,并且在添加记录/行时没有列存储字段的列。我怎样才能获得最新的表格?这将有两种情况:

    • 如果使用数字ID作为标识符,则遍历整个表并获取最大的ID。但对于大型桌子而言,这将是非常低效的。
    • 如果一个随机字符串被用作标识符(这可能是非常非常糟糕的做法),那么这需要更多的思考(我个人不知道除了上面的第一点)。
  2. 如果我的表格的每一行中有一个字段是数字的,我想将其添加到总计(因此第1行的字段为3,第2行的字段为7,我想添加所有这些并返回总数),这将如何完成?

  3. 由于

3 个答案:

答案 0 :(得分:2)

最后一件事使用SUM()

SELECT SUM(OrderPrice) AS OrderTotal FROM Orders

假设它们都在同一列中。

答案 1 :(得分:2)

1)如果id是增量,“选择maxtable(id)作为mytable的最新版本”。如果使用随机字符串,则还应该有增量数字主键。添加它。没有理由没有,并且数据库已经过优化,可以将这种主键用于关系。

2)“从mytable中选择总和(mynumfield)为总数”

答案 2 :(得分:1)

您的第一个问题有点不清楚,但如果您想知道何时插入(或更新)行,那么唯一的方法是记录插入/更新发生的时间。通常,您使用DEFAULT约束进行插入和触发更新。

如果您想知道最大值(可能不一定是最后插入的行),请使用MAX,正如其他人所说:

SELECT MAX(SomeColumn) FROM dbo.SomeTable

如果列被编入索引,则MSSQL不需要读取整个表来回答此查询。

对于第二个问题,请执行以下操作:

SELECT SUM(SomeColumn) FROM dbo.SomeTable

您可能希望查看一些SQL书籍和教程以获取基本语法。