【问题标题】:MS Access Two tables return records where value from Table 1 found in more than one column table 2MS Access 两个表返回记录,其中表 1 中的值在多个列表 2 中找到
【发布时间】:2017-07-19 13:05:22
【问题描述】:

我似乎无法使用 MS Access 弄清楚以下内容。

总结是我有两张桌子。我想将表中的 E 列与 A、B 或 C 列进行比较,并返回值匹配的 table1 上的记录。基本上,要匹配的条件(table2.column E)可以在 table1 中的多个列中。

例如。 表1

A 列 | B栏| C栏

丹斯坦 XXX

大卫 XXX XXX

罗杰 XXX XXX

里科 XXX XXX

威尔伯特 XXX 野狗

表2

D 列 | E 栏 | F栏

1 罗杰诺斯

2 斯坦南

3 迈克尔·南

4 科罗拉多州

5 坎耶·伊斯特

6 野狗西

返回

A 列 | B栏| C栏| F栏

丹斯坦 XXX 南

罗杰 XXX XXX 北

威尔伯特 XXX Dingo West

我已经厌倦了 MS Access (2013) 中的 SQL 字符串下面

选择表 1.* FROM table2 INNER JOIN table1 ON table2.column E = table1.[column A] OR table2.column E = table1.[column B] OR table2.column E = table1.[column C];

我没有收到错误,但出现了严重错误 - 对此数据库的查询通常需要 20-40 秒(最高)(300 万条记录 - 链接到 MS SQL Server 2016 的表) - 查询已经进行了 40分钟。当我在 MS Access 本身中查看表视图时,它会显示记录,但应用程序会一直冻结和卡顿。我试图结束记录,我不得不杀死 MS Access。尝试将数据拉到 Excel 中的 Pivot 中,我从未见过数据拉得这么慢(我们说的是每分钟 50 条记录)。

任何帮助将不胜感激。

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    我认为连接子句不能有 OR 操作。此外,需要 [ ] 在 [E 列] 周围。

    试试:

    SELECT table1.*, tabl2.columnF FROM table1, table2 WHERE [column e] = [column a] OR [column e] = [column b] OR [column e] = [column c];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多