Select * 来自(如果不存在 () else )

Select * from (if not exists () else )

如何用条件的结果加入一个 table?

  1. 第一个查询获取了 Table1
  2. 中的所有信息
SELECT ID, Name, Blob From [Table-1]

2) 第二个请求检查该值是否按 ID 具有所需状态。如果有,则取第一个具有所需状态的,如果没有该状态,则取该ID的第一个。

IF EXIST (select * from [Table-2] where ID = *anyID* and STATUS = *anyStatus*) 
 begin 
    SELECT TOP 1 * from [Table-2] where ID = *anyID* and STATUS = *anyStatus* 
 end 
else 
 begin 
    SELECT TOP 1 * from [Table-2] where ID = *anyID* 
 end
  1. 因此,我需要一个通用的 table,它具有 Table 1 中的所有列和 Table 2 中的值(如果有的话)。 我尝试通过 JOIN 来完成,但出了点问题
SELECT t1.ID, t1.Name, t1.Blob From [Table-1] as t1
LEFT JOIN 
(
   IF EXIST (select * from [Table-2] where ID = *anyID* and STATUS = *anyStatus*) 
     begin 
        SELECT TOP 1 * from [Table-2] where ID = *anyID* and STATUS = *anyStatus* 
     end 
   else 
     begin 
        SELECT TOP 1 * from [Table-2] where ID = *anyID* 
     end
   ) as t2
ON t1.ID = t2.ID

您可以使用 apply:

SELECT t1.ID, t1.Name, t1.Blob, t2.*
From [Table-1] t1 OUTER APPLY
     (SELECT TOP (1) t2.*
      FROM [Table-2] t2
      WHERE t2.id = t1.id 
      ORDER BY (CASE WHEN t2.status = ? THEN 1 ELSE 2 END)
     ) t2;

此 returns 排在 table 2 中,优先选择所需的状态。