В базе данных MS Access для поиска несоответствия (т.е. различия) записей между двумя таблицами (Employee и Employee_PROD) я использую UNION ALL. Запрос выглядит следующим образом:
SELECT [COMPANY],[DEPT],[DOJ],[EMP_ID],[Name],[SUB_COMPANY] FROM
(SELECT '[Employee]' AS TableName,[COMPANY],[DEPT],[DOJ],[EMP_ID],[Name],[SUB_COMPANY] FROM [Employee]
UNION ALL
SELECT '[Employee_PROD]' AS TableName,[COMPANY],[DEPT],[DOJ],[EMP_ID],[Name],[SUB_COMPANY] FROM [Employee_PROD] )
GROUP BY [COMPANY],[DEPT],[DOJ],[EMP_ID],[Name],[SUB_COMPANY]
HAVING COUNT(*) = 1 AND MIN(TableName) = '[Employee]'
Проблема, с которой я столкнулся, заключается в том, что GROUP BY
не учитывает чувствительность к регистру. Например, "andrew" и "Andrew" считаются одним и тем же. Я хочу выполнить группу с учетом регистра, чтобы найти записи различий.
Есть ли способ сделать то же самое в MS Access?
Есть ли другой подход для поиска различий между двумя таблицами с одинаковыми именами столбцов, типами данных и количеством записей 7 00 000?
Я пробовал следующее:
- Загрузите данные в
DataTable
и затем найдите разницу. Исключение нехватки памяти из-за большого объема данных. - Используйте
NOT EXISTS
для сравнения строк. Запрос завис, и выполнение так и не было завершено. - Подход
UNION ALL
работает, но проблема в том, чтоGROUP BY
не учитывает чувствительность к регистру.