Sql查询以选择最后一行以及使用内部联接检索的其他列
我有三个来自三个不同数据库的表。我必须从这三个表中检索多个列,这是通过使用内部联接实现的。 现在我只需要检索最近更新的那一行,即最后一行。如何从不同的数据库检索最后一行和多个列 我的sql查询是Sql查询以选择最后一行以及使用内部联接检索的其他列,sql,sql-server,inner-join,Sql,Sql Server,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_
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)
但在我看来,DESC排名前1的方法是可行的。使用
default getdate()
创建一个名为modified_date
的列,并使用ORDER BY modified DESC