- C# code
表A 表B ID 书名 类型 书名 类型 时间 1 三国 小说 三国 小说 2011-01-01 2 水浒 小说 水浒 小说 2011-01-02 3 萌芽 null 萌芽 刊物 2011-01-03 4 柯南 漫画 三国 null 2011-01-04 5 死神 漫画 null 漫画 2011-01-05
表A ID 和书名 是唯一且 不能为空 表B 时间 不能为空 书名和类型 可以为空 但不能同时为空
要求: 当表B中 类型不为空时 以类型为连接 获取ID 并且时间为最新的 如 4 柯南 漫画 2011-01-05
当类型为空时 以书名为连接 获取ID 并且时间为最新的 如 1 三国 2011-01-4
------解决方案--------------------
- SQL code
select ID,书名,max(时间) 时间from(select ID,A.书名,A.类型,B.时间from A inner join B on (A.书名=B.书名 or A.类型=B.类型))tgroup by t.ID,t.书名order by t.ID
------解决方案--------------------
- SQL code
select * from( case when B.leixing is not null then (select A.ID,A.shuming,A.leixing,MAX(B.time) from A left join B on A.leixing=B.leixing) else (select A.ID,B.shuming,B.time from A left join B on A.shuming=B.shuming ) end)t
------解决方案--------------------