繁体   English   中英

SQL - SELECT max(someDate) 和另一个字段 -> 返回一些不连贯的东西

[英]SQL - SELECT max(someDate) and another field -> returning something incoherent

我有一个名为 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 是正确的,但名称不是与该日期对应的名称。 我真的不明白。 希望有人能帮我理解。 预先感谢您的答复。 干杯。 马克

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

主要规则:永远不要将未包含在GROUP BY子句中或聚合为SELECT的列包含到 SELECT 中。

您的查询是:

 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM