簡體   English   中英

SQL查詢以選擇最后一行以及使用內部聯接檢索的其他列

[英]Sql query to select last row along with other columns which are retrieved using inner join

我有來自三個不同數據庫的三個表。 我必須從這三個表中檢索多個列,這是使用內部聯接完成的。 現在,我只需要檢索最近更新的那一行,即最后一行。 如何從不同的數據庫檢索最后一行以及多列?

我的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 ''

您可以將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

如果您不能使用TOP1和logtime來按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 DECO是必經之路。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM