如果我在Access 2016中运行以下查询,则会得到结果0:
SELECT count(*) FROM EQUIPMENT_OPERATING_HOURS WHERE GUID_EQUIPMENT = '{001C6C0B-73D1-78C4-B4D1-A14E2EA9CA1B}'
如果我对完全相同的过滤器进行“与”运算,则会得到结果1(相信我,我确实确实运行了以下相同的查询):
SELECT count(*) FROM EQUIPMENT_OPERATING_HOURS WHERE GUID_EQUIPMENT = '{001C6C0B-73D1-78C4-B4D1-A14E2EA9CA1B}' AND GUID_EQUIPMENT = '{001C6C0B-73D1-78C4-B4D1-A14E2EA9CA1B}'
如果现在运行以下命令,我将再次得到结果0
SELECT count(*) FROM EQUIPMENT_OPERATING_HOURS WHERE GUID_EQUIPMENT = '{001C6C0B-73D1-78C4-B4D1-A14E2EA9CA1B}' AND 1=1
我对数据库进行了“压缩和修复”,但没有帮助。我什至试图从头开始创建一个新文件,以防尽管压缩和修复前一个文件仍然损坏,但它也无济于事。
如果我在表EQUIPMENT_OPERATING_HOURS和表EQUIPMENT之间设置了具有参照完整性的约束,则第一个查询将返回预期的结果1。(请注意,它绝不会影响查询,因为表EQUIPMENT甚至都不是查询的一部分)
我怀疑Jet引擎有问题,因为在Access程序中或使用C ++ ADO查询时,我都会得到相同的行为。
有关信息,我正在使用Access 2016并具有msjet 4.00.9801.4