如何将一个表与条件的结果连接起来?
获取所有信息
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中的所有列和表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发布于 2021-04-19 11:36:41
您可以使用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;这将返回表2中的一行,并提供所需状态的首选项。
https://stackoverflow.com/questions/67161205
复制相似问题