sql语句左连接,单字段多条件
表A,
字段:id, name, start
1 张三工作室 1
2 李四工作室 0
3 王五工作室 1
4 小明工作室 0
表B
字段:id name a_id value
1 张三 1 1
2 张三女朋友 1 0
3 王五 3 0
4 王五女朋友 3 0
现在要查询,表A字段name,start 表B字段name 条件是A与B想关联,
如果表A中工作室友有默认负责人,就是表B中Value值为1的,
如果表A中工作室没有默认联系人,就随便选择一条,
如果没有负责人,者显示为空
结果
a.name(工作室) b.name(负责人) a.start(状态)
张三工作室 张三 1
王五工作室 王五女朋友(或者王五) 1
小明工作室 无 0
李四工作室 无
我的sql语句是这样地
select a.name as name,b.name as username,a.start from a as a left join
b as b on a.id=b.a_id where b.value=1 or b.value=0 or isnull(value)
有哪位大侠能帮忙看看,sql语句应该怎么修改 sql 左连接 单子段多条件
[解决办法]
;with ta(id,name,start) as
(
select 1,'张三工作室',1
union all select 2,'李四工作室',0
union all select 3,'王五工作室',1
union all select 4,'小明工作室',0
),
tb(id,name,a_id,value) as
(
select 1,'张三',1,1
union all select 2,'张三女朋友',1,0
union all select 3,'王五',3,0
union all select 4,'王五女朋友',3,0
)
select a.name as name,username=case when b.name is not null then b.name else (select top 1 name from tb c where c.a_id=a.id order by NEWID()) end
,a.start
from ta a
left join tb b on a.id=b.a_id and a.start=1 and b.value=1
--结果:多次运行,第一行总是没有变化,第三行都在变化
/*
nameusernamestart
张三工作室张三1
李四工作室NULL0
王五工作室王五女朋友1
小明工作室NULL0
*/