好吧,假设我有一张表,如下图所示名称appModelFlat只有几百行。它没有日期字段,但我想找出五个最近创建的环境(EnvName)。只有14种可能的环境(EnvName)。但是我想选择插入不同EnvName的五个最近插入的行。也就是说,我想选择不同的EnvName(尽管distinct不以这种方式工作)最近的5行,并且我知道它们是最近的id。该行越新,id越高。任何帮助这个查询将不胜感激。SQL选择排名前五位的最近一行并按特定列区分
id|AppName|EnvName|ServerTypeName|ServerId|OS |OSVersion|CPU|Memory|ExtraStorage|MachineDesc |
----------------------------------------------------------------------------------------------------
1 |ASB |DEV |App |1 |Windows|7 |4 |4 |100 |ASB-DEV-App |
----------------------------------------------------------------------------------------------------
5 |AMS |DEV |APP |2 |RedHat |7.2 |4 |4 |50 |AMS-DEV-App |
----------------------------------------------------------------------------------------------------
6 |SPB |TST |App |1 |Windows|7 |2 |8 |50 |SPB-TST-App |
----------------------------------------------------------------------------------------------------
7 |SBI |TST |Oracle |1 |Solaris|11 |4 |8 |100 |SBI-TST-Oracle|
----------------------------------------------------------------------------------------------------
这是我的第一次尝试,虽然我不确定它是否正确。它给我五个结果。
SELECT DISTINCT top 5 [ID] = (SELECT TOP 1 [ID] FROM [AppModelFlat] Y WHERE Y.[EnvName] = X.[EnvName])
,[AppName]= (SELECT TOP 1 [AppName] FROM [AppModelFlat] Y WHERE Y.[EnvName] = X.[EnvName])
,[EnvName]
,[ServerTypeName] = (SELECT TOP 1 [ServerTypeName] FROM [AppModelFlat] Y WHERE Y.[EnvName] = X.[EnvName])
,[ServerId] = (SELECT TOP 1 [ServerId] FROM [AppModelFlat] Y WHERE Y.[EnvName] = X.[EnvName])
,[OS] = (SELECT TOP 1 [OS] FROM [AppModelFlat] Y WHERE Y.[EnvName] = X.[EnvName])
FROM [AppModelFlat] X order by id desc
编辑:
对于预期的结果。可以说我只想选择前两名,因为我只给了5个条目。我想回到以下。
5 |AMS |DEV |APP |2 |RedHat |7.2 |4 |4 |50 |AMS-DEV-App |
----------------------------------------------------------------------------------------------------
7 |SBI |TST |Oracle |1 |Solaris|11 |4 |8 |100 |SBI-TST-Oracle|
因为我只有每ENVNAME之一,每行有该行的最高ID号。
我希望我不会粗鲁,但是,除了预期的结果之外,我完全是这样做的。你甚至读过 – camccar
的问题吗?我看到了样本数据,但是显示预期结果有很多帮助,而不是用文字解释。 – TheGameiswar
也尝试看到链接引用知道,如何提出一个完美的问题:https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-论坛/ – TheGameiswar