2

我正在尝试将表中的值插入到另一个现有表中,并且仅根据特定列按降序对我插入的值进行排序,同时将现有记录留在表的顶部。我怎么做?我尝试使用 Order By 语句,但是无论我使用要从中提取的表的列名还是目标表的列名,我都会收到错误消息。这也是使用 DoCmd.RunSQL 在 VBA 中运行的。

这是我现有的查询:

INSERT INTO AllMetersAvgRSSI
(longitude,latitude,AvgRSSI)
Select Prem.longitude, Prem.latitude, DataByColl.[Avg RSSI]
From [Prem]
Left Join DataByColl ON (Prem.meter_miu_id = DataByColl.[MIU ID])
Order BY [AvgRSSI]描述

最后结果

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

INSERT INTO AllMetersAvgRSSI
(longitude,latitude,[Avg RSSI])
Select Prem.longitude, Prem.latitude, DataByColl.[Avg RSSI]
From [Prem]
Left Join DataByColl ON (Prem.meter_miu_id = DataByColl.[MIU ID])
Order BY [平均 RSSI] 描述

4

2 回答 2

2

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

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

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

于 2011-05-27T14:39:32.610 回答
0

创建一个临时表,按所需顺序添加第一个结果集。将新值插入表中,查询表以将新结果返回到您的临时表中,选择您的临时表,结果将按照您添加它们的顺序,除非您执行另一个排序。

显示结果后不要忘记删除临时表。

于 2011-05-27T14:24:07.760 回答