我有两个表(SQL 服务器):
errorcode(code, utctime, fileversion)
errordescr(code, fileversion, description)
errorcode
包含给定 utctime 的故障历史。
错误被映射到 errordescr 表中的描述。
如果版本不存在于表中,我想使用默认文件版本值 (defaultversion) errordescr
,因此我可以获得给定错误的默认描述。
- 当错误的文件版本存在于 中errordescr
,但代码未在 中注册时errordescr
,我想返回 NULL 作为描述,我不想从“defaultversion”获取默认描述。
我的问题是,当我进行查询时,即使在正确的版本中有描述,我也会从“defaultversion”中获得匹配项。
谢谢
SELECT TOP 50000 sn, utctime, mydb.dbo.error.code, description FROM mydb.dbo.error
LEFT OUTER JOIN mydb.dbo.errordescr
ON(
(
mydb.dbo.error.fileversion=mydb.dbo.errordescr.fileversion
OR
mydb.dbo.errordescr.fileversion='defaultversion'
)
AND
mydb.dbo.error.code=mydb.dbo.errordescr.code
)
ORDER BY utctime DESC
示例: 错误条目:
1. code: 001, utctime: 1970-01-01 00:00:00:000, fileversion: v1.0
2. code: 002, utctime: 1970-01-01 00:00:00:000, fileversion: v2.0
3. code: 003, utctime: 1970-01-01 00:00:00:000, fileversion: v3.0
4. code: 002, utctime: 2000-01-01 00:00:00:000, fileversion: v1.0
errordescr 中的条目:
1. code: 001, fileversion: v1.0, description: "error code #1 from file v1.0"
2. code: 002, fileversion: v1.0, description: "error code #2 from file v2.0"
3. code: 003, fileversion: defaultversion, description: "error code #3 from default"
结果会给出这样的结果:
显示所有错误:
1. code: 001, utctime: 1970-01-01 00:00:00:000, fileversion: v1.0, description: "error code #1 from file v1.0"
2. code: 002, utctime: 1970-01-01 00:00:00:000, fileversion: v2.0, description: "error code #2 from file v2.0"
3. code: 003, utctime: 1970-01-01 00:00:00:000, fileversion: v3.0, description:"error code #3 from default"
4. code: 002, utctime: 2000-01-01 00:00:00:000, fileversion: v1.0, description: NULL