SQL情况在表中

  • 本文关键字:情况 SQL sql
  • 更新时间 :
  • 英文 :


我有两个表格:table1和table2均为ID列。我想在表1中创建一个列,该列显示" y",如果Table1中的ID在Table2和'n'中,则为" y"。

目前,我正在使用:

Select id, case when id in (table2) then 'Y' else 'N' end as in_table2 
from table1

但是,由于这两个表都很大,因此查询将永远消失。有更有效的方法吗?

谢谢

使用 exists

Select t1.id,
       (case when exists (select 1 from table2 t2 where t2.id = t1.id)
             then 'Y' else 'N'
        end) as in_table2 
from table1 t1;

这应该比使用/subqueries更快,高效:

    SELECT  t1.id ,
            CASE WHEN t2.id IS NULL 
                THEN 'N'
                ELSE 'Y'
            END AS in_table2
    FROM    table1 t1
            LEFT JOIN TABLE2 t2 ON t1.id = t2.id;

通过左加入,您可以保持Table2上的记录的可见性,如果ID为NULL,则知道它存在于表1上,但在Table2上不存在,因此您可以安全地使用案例语句根据T2显示y或n。id。

最新更新