【发布时间】:2015-04-30 21:13:45
【问题描述】:
我需要从多个表中获取数据,但我需要的最后一条数据可以来自三个表中的一个,并且每个表使用唯一的列名。我尝试在 select 中设置 CASE 语句,但我显然犯了语法错误。我在正确的轨道上吗?有没有更好的办法?这是一个 DB2 数据库。我的访问权限有限,不认为动态 SQL 或创建表是一种选择。
SELECT M1.MESSAGE_ID, M1.MESSAGE_NAME, M1.CREATED_DATETIME, M1.MESSAGE_SIZE, M2.PATH,
case when select EXTRACTABLE_COUNT from MBX_EXTRACT_COUNT where exists (select M1.MESSAGE_ID from MBX_EXTRACT_COUNT)
then select EXTRACTABLE_COUNT from MBX_EXTRACT_COUNT
when select EXTRACTABLE_UNTIL from MBX_TIL_COUNT where exists (select M1.MESSAGE_ID from MBX_TIL_COUNT)
then select EXTRACTABLE_UNTIL from MBX_TIL_COUNT
when select EXTRACTABLE from MBX_EXTRACTABLE where exists (select M1.MESSAGE_ID from MBX_EXTRACTABLE)
then select EXTRACTABLE from MBX_EXTRACTABLE
end as EXTRACT_VALUE
FROM MBX_MESSAGE M1
left JOIN MBX_MAILBOX M2
ON M1.MAILBOX_ID = M2.MAILBOX_ID
left JOIN MBX_EXTRACT_COUNT M3
ON M1.MESSAGE_ID = M3.MESSAGE_ID
left JOIN MBX_EXTRACT_TIL M4
ON M1.MESSAGE_ID = M4.MESSAGE_ID
left JOIN MBX_EXTRACTABLE M5
ON M1.MESSAGE_ID = M4.MESSAGE_ID
【问题讨论】: