0

我有一个名为 myTable 的表,如下所示:

id, myDate, name, group  
1, 2012-04-09, john, subGroup-A  
2, 2012-04-10, marc, subGroup-B

对于以“subGroup”开头的子组,我想检索带有 maxDate 及其名称的记录。所以我正在做以下查询:

SELECT max(myDate) AS maxDate, name FROM myTable WHERE group LIKE "subGroup%";

我希望这个查询返回给我这个:

maxDate, name  
2012-04-10, marc

但相反,它给了我这个:

maxDate, name  
2012-04-10, john

所以基本上 maxDate 是正确的,但名称不是对应于该日期的名称。我真的不明白。希望有人能帮助我理解。预先感谢您的回复。干杯。马克

4

2 回答 2

2

您可以参考这篇文章我需要一个 sql 查询来按名称分组,但根据最新条目返回其他字段 MSSQL 有 2 种解决方案,一种是通用的。

主要规则:永远不要包含SELECT未包含在GROUP BY子句中或具有聚合功能的列。

于 2012-04-10T10:51:26.977 回答
2

您的查询是:

 SELECT max(myDate) AS maxDate, name FROM myTable WHERE group LIKE "subGroup%";

我认为您需要以下内容:

SELECT MAX(myDate) AS maxDate, name 
FROM  myTable 
GROUP BY NAME 
HAVING group LIKE "subGroup%"

或者

SELECT myDate AS maxDate, name 
FROM myTable 
WHERE group LIKE "subGroup%" AND myDate = (SELECT MAX(myDate) FROM myTable)
于 2012-04-10T10:55:28.867 回答