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。
我觉得我目前的做法非常低效。有一个更好的方法吗?
您可以使用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)