在通过 ADO SQL 的 VBA Excel 中,我如何才能“仅引用一次”记录并将其链接到另一个以避免调用相同的记录?

Posted

技术标签:

【中文标题】在通过 ADO SQL 的 VBA Excel 中,我如何才能“仅引用一次”记录并将其链接到另一个以避免调用相同的记录?【英文标题】:In VBA Excel through ADO SQL, How may I refer to a record "only once" and link it to another avoiding the same record to be recalled? 【发布时间】:2016-01-18 16:06:59 【问题描述】:

我有一个包含 3 个字段的表格: (数量有正负) TAB_A 身份证 |数量 |相关_ID 1       100       *? (它是 2 并且是正确的) 2       -100      (无) 3       100       *? (是 2 但应该是 4) 4       -100      (无)

以及以下 SQL 查询:

UPDATE Table_A AS ta LEFT JOIN Table_A AS tb ON ta.[quantity] = -tb.[quantity] 
SET ta.Related_ID = tb.[ID] 
WHERE ta.[quantity] > 0 AND tb.[Quantity] < 0 

我想在查询中添加一个识别已使用 ID 并且不会再次使用它们的部分。

【问题讨论】:

我知道完成任务的其他方法是通过 ado 记录集解析所有记录,但这需要很长时间。 【参考方案1】:

这样的事情可能会有所帮助,具体取决于您的所有数据是否都与您发布的样本一样。

query from question
and tb.id = 
(select min(id)
from table_a
where id > ta.id)

语法可能不是 100% 正确,但逻辑应该没问题。通过将更新查询更改为选择查询并查看结果来进行测试。

【讨论】:

这个解决方案符合我的问题,但我不认为它是否能够涵盖所有情况。初步结果也可以列出如下: 1. -100 2. -90 3. -100 4. 100 5. 90 6. 100 数量可以任意顺序排列。【参考方案2】:

此解决方案符合我的问题,但我认为它不能涵盖所有情况。初步结果也可以列举如下:

    -100 -90 -100 100 90 100

数量可以任意排列。

【讨论】:

以上是关于在通过 ADO SQL 的 VBA Excel 中,我如何才能“仅引用一次”记录并将其链接到另一个以避免调用相同的记录?的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 ADO 的 Excel 2010 VBA(或带有 LINQ 的 vb.net)查询表的最佳 SQL 语句是啥

求助,EXCEL通过VBA操作SQL数据库

在 VBA 中打开与 Excel 电子表格的 ADO 连接

在 SQL 查询中使用变量会引发 ADO 错误

Excel/ADO/VBA:计数返回不正确的结果

Excel VBA ADO查询循环太多行