我不太擅长SQL,所以我有以下表格
东西
和
特种
让我们说,名叫'Bob'的工人有两个专长。我怎么能得到带有额外列的专业表(比如说计数),如果记录存在于Stuff中则为1,否则为0。
我想询问是否有任何方法可以转换查询 返回Bob的结果,如下所示?
任何建议都会非常有帮助。先感谢您。 (我不确定标题。如果你有更好的主意,请建议!)
答案 0 :(得分:2)
我倾向于使用case
和exists
:
select sp.*,
(case when exists (select 1
from stuff s
where s.surname = 'Bob' and
s.speciality_code = sp.speciality_code
)
then 1 else 0
end) as BobHas
from specialty sp;
答案 1 :(得分:1)
使用Left Outer join
进行Null
检查。试试这个。
SELECT sp.specialitycode,
sp.description,
CASE
WHEN st.specialitycode IS NULL THEN 0
ELSE 1
END AS count
FROM speciality sp
LEFT OUTER JOIN (SELECT specialitycode
FROM stuff
WHERE surname = 'Bob') st
ON sp.specialitycode = st.specialitycode