如果记录存在于相关表中,则sqlite额外列为1和0

时间:2015-01-16 17:13:56

标签: sql sqlite

我不太擅长SQL,所以我有以下表格

东西

Workers

特种

specialties

让我们说,名叫'Bob'的工人有两个专长。我怎么能得到带有额外列的专业表(比如说计数),如果记录存在于Stuff中则为1,否则为0。

我想询问是否有任何方法可以转换查询 返回Bob的结果,如下所示?

enter image description here

任何建议都会非常有帮助。先感谢您。 (我不确定标题。如果你有更好的主意,请建议!)

2 个答案:

答案 0 :(得分:2)

我倾向于使用caseexists

执行此操作
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