sql - 多表 Access 查询

标签 sql database ms-access

我正在尝试合并 Microsoft Access 中的多个表以返回 LIKE 通配符值。但是,我希望它通过一系列事情来完成,而不仅仅是一个特定的项目。我有下表标记为“SomeData”

ID  Fund    TextFld             Type1
2   Sewer   COMP -              DZ Docs
3   Sewer   SEW:                ZO Docs

我有第二个标有 GL 的表,我在其中查找 TextFld:例如,可能有:

COMP - ABC
COMP - DEF
SEW: GHS
SEW: XYZ

我输入SQL:

SELECT GL.Text, SomeData.Type1
FROM SomeData INNER JOIN GL ON SomeData.Fund = GL.Type
WHERE GL.Text LIKE SomeData.TextFld;

但是,这只会返回完全匹配项。我该怎么做才能找到任何类似的匹配项。

请注意这些会有很多行,所以我不能只使用任何东西,例如 LIKE "COMP*"OR "SEW*"

非常感谢您。任何帮助将不胜感激。

最佳答案

您的查询中没有通配符。 MS Access 中的通配符是星号,因此您的查询应如下所示:

SELECT GL.Text, SomeData.Type1
FROM SomeData INNER JOIN GL ON SomeData.Fund = GL.Type
WHERE GL.Text LIKE '*' & SomeData.TextFld & '*';

我从未在使用另一个表中的字段时使用过 LIKE 语句,但我相当确定语法是正确的。

注意:在此查询中,您将获取字段中任意位置存在 COMPSEW 的任何记录。如果您希望它仅在字段开头找到时显示,则为:

WHERE GL.Text LIKE & SomeData.TextFld & '*';

同样,如果您希望它只匹配最后找到的位置:

WHERE GL.Text LIKE '*' & SomeData.TextFld;

关于sql - 多表 Access 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31421740/

相关文章:

sql - 选择记录并将其作为函数参数传递

mysql - 通过在一个简单的表上使用 MySql 进行三次计数和分组......是否可以在一个查询中进行?

sql - SELECT sql 返回 3 行列中值的总和作为第二列值,依此类推

c# - 如何检查表中是否存在值,如果存在则删除它?

MS Access 中的 SQL 查询变量

mysql - 在 SQL 中使用 UNION 调用嵌套 INNER JOIN - 相当迷茫

java - Junit 测试后的数据库清理

python - 如何使用 pgdb.executemany?

database - Access 2000 数据库安全

sql - 语法错误和功能的情况