日期:2014-05-17  浏览次数:20595 次

A和B关联查询
有两个表A和B,两个表通过id关联,但是A中id的范围为1~38000,B中id范围为1~12000和50001~50230,sql语句为select A.字段名,B.字段名 from A,B where A.id=B.id 现在想让查询B中50000以上记录的时候让B.id=B.id-20000,这个条件该怎么添加
------最佳解决方案--------------------

select *
from A inner join B on a.id=(case when b.id>50000 then b.id-20000 else b.id end)
------其他解决方案--------------------
两个表先UNION all起来,然后再对结果集筛选
------其他解决方案--------------------
引用:
select *
from A inner join B on a.id=(case when b.id>50000 then b.id-20000 else b.id end)

正解,我一直以为where子语句里面不能包含case  when ,刚才用了一下没问题