mysql - mybatis select语句问题
过去多啦不再A梦
过去多啦不再A梦 2017-06-20 10:05:48
0
3
865

消息提醒续,这个消息可能是别人直接回复了你的文章,这时需要进行数据库操作关联文章表获取相应文章的内容【消息提醒:您的文章xxx有了新的回复】,也可能是别人回复了你的评论这时关联的就是评论表来获取评论的内容【消息提醒:您的评论xxx有了新的回复】,消息点击后即可出现显示详情这样子。

数据库表结构如下

mbelongbid为消息所属的文章的id,mbelongcid为消息所属的评论的id。
当mbelongcid为空时说明消息是直接回复文章,此时关联的是文章表;
当mbelongcid不为空时说明消息回复的对象是某一条评论,此时关联的是评论表。

sql语句要怎么写才能符合这种需求?
现在的想法是:

select

r.*, 
<if test="mbelongcid == null">`blog`.btitle</if>
<if test="mbelongcid != null">`comment`.ccontent</if>

from
(

select 
    mid, mreferuid, mbelongbid, mbelongcid
from 
    message
where mid = #{_parameter}

)r,
<if test="mbelongcid == null">

`blog` where r.mbelongbid = `blog`.bid

</if>
<if test="mbelongcid != null">

`comment` where r.mbelongcid = `comment`.cid

</if>

直接这样写是有问题的,大致的想法就是根据mbelongcid是否为null去关联不同的表获取不同的字段,有没有好的解决方案或者建议?

过去多啦不再A梦
过去多啦不再A梦

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!