如何将生成的查询信息插入到表中,同时将现有表记录保留在顶部?

时间:2011-05-27 14:06:25

标签: sql vba ms-access-2010

我正在尝试将表中的值插入到另一个现有表中,并且只是将我插入的值按照特定列的降序排序,同时将现有记录保留在表的顶部。我怎么做?我曾尝试使用Order By语句,但是我是否使用了我要拉出的表的列名或目标表的列名,我得到了一个错误。此外,这是使用DoCmd.RunSQL在VBA中运行。

这是我现有的查询:

  

插入AllMetersAvgRSSI
  (经度,纬度,AvgRSSI)
  选择   Prem.longitude,Prem.latitude,   DataByColl。[平均RSSI]
  从[Prem]
  剩下   加入DataByColl ON(Prem.meter_miu_id   = DataByColl。[MIU ID])
  订单BY [AvgRSSI] desc

最终结果

我继续摆弄这个并发现,你可以像我上面所说的那样使用订单完全像我想做的那样。我显然遇到的问题是由我想要排序的列的名称仅从Avg RSSI更改为AvgRSSI引起的。当我将目标表更改为与源表具有相同的字段名称时,它会对传入的信息进行排序,同时仅保留现有信息。我还做了一个测试,我将目标表的名称更改为AverageRSSI,它的工作方式相同。所以最后,字段的名称只是由导致问题的空间而不同。最后的查询是:

  

插入AllMetersAvgRSSI
  (经度,纬度,[平均RSSI])
  选择   Prem.longitude,Prem.latitude,   DataByColl。[平均RSSI]
  从[Prem]
  剩下   加入DataByColl ON(Prem.meter_miu_id   = DataByColl。[MIU ID])
  订单BY [Avg RSSI] desc

2 个答案:

答案 0 :(得分:2)

从数据库的角度来看,在INSERT中排序是没有意义的。数据库如何将行放入表中取决于表的基础物理结构,而不是它们的插入顺序。

也许你的应用程序依赖于某个顺序的自动递增列,这将依赖于插入的顺序,但如果是这种情况,那么我会说你在数据库设计中犯了错误不应该是围绕自动递增列设计的业务逻辑。

ORDER BY语句中删除INSERT,如果您需要稍后按特定顺序检索行,请在那里使用ORDER BY

答案 1 :(得分:0)

创建临时表,按所需顺序添加第一个结果集。将新值插入表中,查询表以使用订单将新结果返回到临时表中,选择临时表,结果将按添加顺序排列,除非您按顺序执行其他操作。

显示结果后,不要忘记丢弃临时表。