mysql两个表字段关联查询_mysql 根据一个表的字段值不同关联查询两张不同的表...

有一下三张表A,B,C,A.type=0时,target_id为B.id;A.type=1时,target_id为C.id

A表

id  type  target_id

1    1            1

2     0           1

3     1           2

4     0           2

_________

B表

id    b_name

1       b_name1

2       b_name2

_____________

C表

id    c_name

1      c_name1

2      c_name2

_________

需求是:查询条件是name,查出B.b_name 或C.c_name like ‘%name%’ 的记录,结果字段是A.id,name

例如以上表,假如查询name1 ,结果如下

A.id    name

1         c_name1

2         b_name1

问一下高手们,上面的查询语句该怎么样让写呢?在线等

解决方案

20

有一下三张表A,B,C,A.type=0时,target_id为B.id;A.type=1时,target_id为C.id

A表

id  type  target_id

1    1            1

2     0           1

3     1           2

4     0           2

_________

B表

id    b_name

1       b_name1

2       b_name2

_____________

C表

id    c_name

1      c_name1

2      c_name2

_________

本人只是随便写写,更好的 一定在其他人 那里

select  a.id,b.name from a  join b on a.target_id=b.id      where a.type=0

union

select  a.id,c.name from a  join c on a.target_id=c.id      where a.type=1

不太明白lz 这个逻辑是用在什么地方, sql 实现时没有问题,总感觉 这个要是太多,sql的效率比较低

20

select a.id,(CASE WHEN a.type = 0 THEN b.name else c.name END) from a

left join b on a.target_id=b.id

left join c on a.target_id=c.id

试试速度,也可以吧case when 用在join 的时候拼接sql

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mysql 根据一个表的字段值不同关联查询两张不同的表!

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

父母世界

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值