如何將一個表與條件的結果連接起來?
- 第一個查詢從表 1 中獲取所有資訊 。
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 [Table1] 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
uj5u.com熱心網友回復:
你可以使用apply:
SELECT t1.ID, t1.Name, t1.Blob, t2.*
From [Table-1] t1 OUTER APPLY
(SELECT TOP (1) t2.*
FROM [Table2] t2
WHERE t2.id = t1.id
ORDER BY (CASE WHEN t2.status = ? THEN 1 ELSE 2 END)
) t2;
這將回傳表2中的一行,并優先考慮所需的狀態。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314832.html
標籤:
下一篇:正確計算SQL中的作業日
