这个逻辑很多时候都是在代码中完成的,先查询B表,如果有就返回,如果没有再查询A表
如果一定要用sql完成也是可以的
select *,1 as sort from B where id=5union
select *,2 as sort from A where id=5
order by sort asc
limit 1
分别查询A、B表中id=5的结果,用union合并。
如果A、B表只有一个表中有数据,那么结果肯定符合预期。
如果两个表都有id为5的数据,那么查询结果是两行。于是这里自定义了一个sort字段,B表为1,A表为2,对两条结果升序排列取第1条。这样就保证了如果A、B表都有数据时最后获取的是B表的数据。
你的意思是公用一套用户系统,但是发贴不一样,是吧。一般来说论坛积分都是跟发贴对应的,如果你要是帖子不一样,积分好像就不能一样了。
积分一样还要各自的帖子不一样,这样貌似 *** 作就有点难度了。
select t3.id from company t1inner join product t2 on t1.id=t2.cid
inner join apply t3 on t2.id=t3.pid
where t1.id=要查的公司id
group by t3.id
上面只是大概,t2.cid是product中公司的外键,t3.pid是apply中产品的主键,具体表结构是什么相应更改
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)