检查id是否存在于多个表中

mHe*_*pMe 0 sql-server sql-server-2012

我正在使用 SQL Server 2012。

我有 5 张桌子(我们称它们为 A、B、C、D 和 E)。每个表都包含一个名为 m_id 的列,其中包含 nvarchar(10) 的 id。

我目前运行查询次数低于 5 次(更改表名称)。查看表中是否包含该id。

select m_id from A where m_id = 'some_id'
Run Code Online (Sandbox Code Playgroud)

基本上我想知道 id 是否是 5 个表中的任何一个,如果是,则返回 1,否则如果 5 个表中的任何一个都不存在,则返回 0。

我觉得我目前的做法非常低效。有一个更好的方法吗?

Tim*_*ter 5

您可以使用UNION(预先删除重复项)或UNION ALL

SELECT CASE WHEN EXISTS 
  ( SELECT 1 FROM ( SELECT m_id FROM  A 
                    UNION 
                    SELECT m_id FROM  B 
                    UNION 
                    SELECT m_id FROM  C 
                    UNION 
                    SELECT m_id FROM  D 
                    UNION 
                    SELECT m_id FROM  E ) All 
    WHERE  All.m_id = 'some_id') 
THEN 1 ELSE 0 END AS ContainsID 
Run Code Online (Sandbox Code Playgroud)