mysql 左连接 加号_mysql – 带条件的左连接

假设我有这些表

create table bug (

id int primary key,

name varchar(20)

)

create table blocking (

pk int primary key,

id int,

name varchar(20)

)

insert into bug values (1, 'bad name')

insert into bug values (2, 'bad condition')

insert into bug values (3, 'about box')

insert into blocking values (0, 1, 'qa bug')

insert into blocking values (1, 1, 'doc bug')

insert into blocking values (2, 2, 'doc bug')

我想加入id列的表格,结果应该是这样的:

id name blockingName

----------- -------------------- --------------------

1 bad name qa bug

2 bad condition NULL

3 about box NULL

这意味着:

我想从#bug返回所有行

‘blockingName’列中应该只有’qa bug’值或NULL(如果找不到#blocking中的匹配行)

我天真的选择是这样的:

select * from #bug t1

left join #blocking t2 on t1.id = t2.id

where t2.name is null or t2.name = 'qa bug'

但这不起作用,因为似乎条件首先应用于#blocking表然后它被连接.

这个问题的最简单/典型解决方案是什么? (我有一个嵌套选择的解决方案,但我希望有更好的东西)

解决方法:

简单地在加入中加入“qa bug”标准:

select t1.*, t2.name from #bug t1

left join #blocking t2 on t1.id = t2.id AND t2.name = 'qa bug'

标签:sql,mysql,tsql,left-join

来源: https://codeday.me/bug/20191006/1859170.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值