我需要比较两个数据表。表1是“源数据”,其中包含表2需要包含的所有文件。我要比较的每个表中的条目之一是数据的文件路径,以验证它们是否应位于目录中。
两个表中的文件路径条目的列出方式有所不同,表1仅包含文件名,表2包含文件的完整文件路径。
表1-“源文件”:
表2-“所有文件”:
每个文件名都是唯一的,但是它们都具有一个ID号,我希望该ID号可以用来与表2进行比较。我想从文件名中提取该ID号,然后比较表,但是我尝试运行我执行的查询时没有成功。
这是我当前的查询(已编辑):
SELECT [SourceFiles].[SourceAudio ID], Mid(Left([SourceFiles].[Filename], InStrRev([SourceFiles].[Filename], ".")-1), InStrRev([SourceFiles].[Filename],"_")+1) As Filename
FROM [SourceFiles] LEFT JOIN [AllFiles]
ON Mid(Left([SourceFiles].[Filename], InStrRev([SourceFiles].[Filename], ".")-1), InStrRev([SourceFiles].[Filename],"_")+1) = Mid(Left([AllFiles].[Filename], InStrRev([AllFiles].[Filename], ".")-1), InStrRev([AllFiles].[Filename],"_")+1)
WHERE ((Mid(Left([AllFiles].[Filename], InStrRev([AllFiles].[Filename], ".")-1), InStrRev([AllFiles].[Filename],"_")+1) Is Null));
我希望此查询的结果如下所示:
但是它出现一个错误,提示“ 条件表达式中的数据类型不匹配”。我回过头来,验证所有内容均输入正确。我在做什么错了?
答案 0 :(得分:0)
尝试一下:
Select
*
From
SourceFiles
Where
filename Not In
(Select Mid(filename, InstrRev(filename, "\") + 1) From AllFiles)
那可能运行缓慢。如果是这样,请将子查询的输出写入到临时表中,该临时表的字段文件名带有索引,并在上面的查询中使用它:
Select
*
From
SourceFiles
Where
filename Not In
(Select filename From TempTable)