【问题标题】:How to specify insertion order for rows in SQL?如何在 SQL 中指定行的插入顺序?
【发布时间】:2011-05-25 18:20:21
【问题描述】:

如何指定将行插入 SQL 数据库的顺序?

例如我想按日期降序插入我的记录。

cmd.CommandText = "select parkname,packname,duration,bookday from book where userid='"
    + Label15.Text + "' ORDER BY bookday DESC ";
rst = cmd.ExecuteReader();
rst.Read(); 

【问题讨论】:

  • Insert 语句不能有 order by 子句。对不起。这就是为什么您在尝试执行此操作时遇到错误的原因。其余的,如 RedFilter 所述。
  • 我知道黑暗。但是我的按降序检索数据的语法不起作用
  • 一个 SQL (Server?) 表没有有任何特定的顺序 - 只有在运行 SELECT 时明确要求时,您才会得到一个订单。因此,您也不能按特定顺序插入数据 - 您只需插入数据 - 周期。如果您希望它按日期(降序)的顺序返回,您需要在您的SELECT 中指定ORDER BY (datefield) DESC

标签: c# sql


【解决方案1】:

不用担心插入记录的顺序。

原因是,当使用 SQL 选择数据时,返回记录的顺序是不确定的,除非您使用ORDER BY 子句。如果出于性能原因要维护表顺序,请在要排序的列上使用聚集索引。

如果您只想按日期降序选择数据,请执行以下操作:

select MyColumn1, MyColumn2, MyDateColumn
from MyTable
order by MyDateColumn desc

【讨论】:

  • 感谢过滤器的帮助。实际上我想按日期的降序从数据库中检索记录。
  • 是的,我用来根据日期列值显示其他列值的语法相同。但它没有显示正确的数据。那我该怎么办。
  • 如果行没有以正确的顺序返回,那么您排序的列可能不是日期时间数据类型。
  • 没有日期时间数据类型。
  • 请发布示例数据和您的查询。架构 DDL 也会有所帮助。
【解决方案2】:

规范化关系数据库的特点之一是您无需担心顺序。每一行都是独立的。如果左右切换 ​​2 行,数据还是一样的,意思也一样。

您需要的是日期时间戳。将一个字段添加到存储日期时间的表中,然后将该字段的默认值设置为 GETDATE()。然后,每当您进行插入时,该行都会被标记日期时间。然后,您可以在查询中使用 Order by 以正确的顺序显示数据。

【讨论】:

  • 你能告诉我如何以相对于日期的降序插入数据
  • 是的:不要!使用关系数据库时,它不是要尝试的东西!
猜你喜欢
  • 2018-03-15
  • 2019-03-28
  • 2012-12-30
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
相关资源
最近更新 更多