【问题标题】:Access SQL: I am trying to update a table with values from the same tableAccess SQL:我正在尝试使用同一表中的值更新表
【发布时间】:2020-11-15 05:08:35
【问题描述】:

我正在尝试将从 Ebay 导出的 CSV 文件导入 MS Access。

Ebay 将应该在两个文件中的内容塞进一个文件中。因此,如果有人购买了两种产品,Ebay 会将客户详细信息放在一行中,然后将购买的产品放在以下几行中。

客户cruze130613购买了两件产品,所以信息分布在三行!

我想做的是填补空的User ID 列空白。

所以:

Set [User ID] equal same 'User ID' as where [Sales record number] = [Sales record number]

我认为[Sales record number] 的选择子句应该使用DISTINCT,因为在>1 行上重复。

任何有关 SQL 代码的帮助将不胜感激。

【问题讨论】:

  • 这似乎类似于嵌套结构。如果 Ebay 支持 XML 导出,MS Access 也可以导入此类类型。..

标签: sql ms-access


【解决方案1】:

大概是这样的:

update YourTable t1 
set t1.[user id] = dlookup
(
    "[user id]",
    "YourTable",
    "[user id] is not null and [sales record number]=" & t1.[sales record number]
)
where t1.[user id] is null

YourTable 的两个引用更改为您的表的名称。

这里,域聚合函数DLookup 用于获取满足所提供条件的记录的User ID 字段的值(在这种情况下,User ID 不为空,sales record number 为等于正在更新的记录)。

还有其他方法可以达到相同的结果,但这里使用DLookup 来保留MS Access 中查询的“可更新性”。

【讨论】:

    【解决方案2】:

    感谢李先生的建议。

    据我所知,Ebay 只导出这些伪 CSV 文件。

    我今天又看了一遍,并设法找到了解决方案。我想知道你的和我的哪个效率更高?

    UPDATE tEbImportRaw AS eir1
    INNER JOIN tEbImportRaw AS eir2
    ON eir1.[Sales Record Number] = eir2.[Sales Record Number]
    SET eir1.[User ID] = eir2.[User ID];
    

    【讨论】:

      猜你喜欢
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2016-07-22
      • 1970-01-01
      • 2016-04-27
      • 1970-01-01
      • 2017-11-17
      相关资源
      最近更新 更多