2014-12-19 17 views
0

我有三個表來自三個不同的數據庫。我必須從這三個表中檢索多個列,這是我通過使用內部連接完成的。 現在我只需檢索最近更新的那一行,即最後一行。如何檢索最後一行以及來自不同數據庫的多列?Sql查詢選擇最後一行以及使用內部連接檢索的其他列

我的SQL查詢

SELECT a.logtime, a.BL1_data_SS_ST, a.BL2_data_SS_ST, a.BL3_data_SS_ST, 
a.BL4_data_SS_ST, a.BL5_data_SS_ST, a.BL6_data_SS_ST, a.BL7_data_SS_ST, 
a.BL8_data_SS_ST, a.BL9_data_SS_ST, a.BL10_data_SS_ST, a.BL11_data_SS_ST, 
a.BL12_data_SS_ST, a.BL13_data_SS_ST, a.BL14_data_SS_ST, a.BL15_data_SS_ST, 
a.BL16_data_SS_ST, a.BL17_data_SS_ST, a.BL18_data_SS_ST, a.BL19_data_SS_ST, 
a.BL20_data_SS_ST, a.BL21_data_SS_ST, a.BL22_data_SS_ST, a.BL23_data_SS_ST, 
a.BL24_data_SS_ST, a.BL25_data_SS_ST, a.BL26_data_SS_ST, a.BL27_data_SS_ST, 
b.st1_prmt_status_p45, c.beam_current, c.beam_energy 

FROM INDUS2_BLFE.dbo.main_BLFE_status a 
INNER JOIN INDUS2_MSIS.dbo.main_MSIS_status b on a.logtime = b.logtime 
INNER JOIN INDUS2_BDS.dbo.DCCT c on b.logtime = c.logtime '' 
+1

使用'default getdate()'調用'modified_date'列並使用'order by modified desc' – 2014-12-19 05:19:33

回答

2

您可以使用TOP 1 ORDER BY

SELECT TOP 1 a.logtime, a.BL1_data_SS_ST, a.BL2_data_SS_ST, a.BL3_data_SS_ST, 
a.BL4_data_SS_ST, a.BL5_data_SS_ST, a.BL6_data_SS_ST, a.BL7_data_SS_ST, 
a.BL8_data_SS_ST, a.BL9_data_SS_ST, a.BL10_data_SS_ST, a.BL11_data_SS_ST, 
a.BL12_data_SS_ST, a.BL13_data_SS_ST, a.BL14_data_SS_ST, a.BL15_data_SS_ST, 
a.BL16_data_SS_ST, a.BL17_data_SS_ST, a.BL18_data_SS_ST, a.BL19_data_SS_ST, 
a.BL20_data_SS_ST, a.BL21_data_SS_ST, a.BL22_data_SS_ST, a.BL23_data_SS_ST, 
a.BL24_data_SS_ST, a.BL25_data_SS_ST, a.BL26_data_SS_ST, a.BL27_data_SS_ST, 
b.st1_prmt_status_p45,c.beam_current, c.beam_energy 
FROM INDUS2_BLFE.dbo.main_BLFE_status a 
INNER JOIN INDUS2_MSIS.dbo.main_MSIS_status b on a.logtime = b.logtime 
INNER JOIN INDUS2_BDS.dbo.DCCT c on b.logtime = c.logtime '' 
ORDER BY a.logtime DESC 
0

如果您不能使用TOP1,並logTime Description該條,由DESC訂購,像其他職位建議,你可以試試這個...

它將整個結果集存入帶有標識列的臨時表中,然後從該表中選擇最大標識。

SELECT IDENTITY(INT, 1, 1) Cnt, * 
INTO #TMP 
SELECT a.logtime, a.BL1_data_SS_ST, a.BL2_data_SS_ST, a.BL3_data_SS_ST, 
a.BL4_data_SS_ST, a.BL5_data_SS_ST, a.BL6_data_SS_ST, a.BL7_data_SS_ST, 
a.BL8_data_SS_ST, a.BL9_data_SS_ST, a.BL10_data_SS_ST, a.BL11_data_SS_ST, 
a.BL12_data_SS_ST, a.BL13_data_SS_ST, a.BL14_data_SS_ST, a.BL15_data_SS_ST, 
a.BL16_data_SS_ST, a.BL17_data_SS_ST, a.BL18_data_SS_ST, a.BL19_data_SS_ST, 
a.BL20_data_SS_ST, a.BL21_data_SS_ST, a.BL22_data_SS_ST, a.BL23_data_SS_ST, 
a.BL24_data_SS_ST, a.BL25_data_SS_ST, a.BL26_data_SS_ST, a.BL27_data_SS_ST, 
b.st1_prmt_status_p45, c.beam_current, c.beam_energy 

FROM INDUS2_BLFE.dbo.main_BLFE_status a 
INNER JOIN INDUS2_MSIS.dbo.main_MSIS_status b on a.logtime = b.logtime 
INNER JOIN INDUS2_BDS.dbo.DCCT c on b.logtime = c.logtime '' 

SELECT * 
FROM #TMP 
WHERE Cnt = (SELECT MAX(Cnt) FROM #TMP) 

但在我看來,TOP 1 ORDER BY DESC方法是要走的路。

相關問題