我正在尝试在MS Access 2007中进行简单查询:
SELECT Table1.Name, Table2.Name FROM TABLE2
INNER JOIN TABLE1 ON TABLE2.Name = TABLE1.NAME;
我知道这两个字段具有相同的值;例如table1
和table2
都有“Mike Smith”行。但是,当我运行查询时,不会显示任何记录。如果我进入table2
并重写名称记录,它将显示在查询中。
这两个表都是通过链接CSV文件中的make table查询创建的。
答案 0 :(得分:1)
查看db引擎是否同意两个表中Mike Smith的Name值相同。
SELECT
[Name] AS name_field,
Len([Name] AS name_length,
'TABLE1' AS source_table
FROM TABLE1
WHERE
[Name] ALike '%Mike%'
AND [Name] ALike '%Smith%'
UNION ALL
SELECT
[Name] AS name_field,
Len([Name] AS name_length,
'TABLE2' AS source_table
FROM TABLE2
WHERE
[Name] ALike '%Mike%'
AND [Name] ALike '%Smith%'
ORDER BY 1, 3;
除了@JohnFx提到的尾随空格的可能性之外,您的Name值可能包含不是空格的不可见字符。从Excel数据源导入时,我偶尔会遇到这样的字符。
更新:如果您使用DAO运行查询,则可以修改WHERE子句,如下所示:
WHERE
[Name] Like '*Mike*'
AND [Name] Like '*Smith*'
但是,在ADO下运行查询时,WHERE子句会出现问题,因为ADO要求您使用ANSI通配符(%和_而不是*和?)。 ALike(ANSI Like)关键字告诉db引擎期望ANSI通配符,因此无论查询是在DAO还是ADO下运行,都将运行相同的操作。