![](/img/trans.png)
[英]SELECT where when Max of one field corresponding field in another is something
[英]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.