MySQL 查询没有得到正确的值

标签 mysql

我有一个像这样的表 numberoffirms:

--------------------------------------------
| id | region | month | year |    value    |
--------------------------------------------
|   1|       1|      1|     1|      1024001|
|   2|       1|      7|    25|        33542|
|   3|       1|      3|    26|     10000000|
|   4|       1|      5|    26|         1995|
|   5|       2|      4|    16|       123456|

我的问题是我需要根据最高月份和年份获取每个区域的最高值。例如,从上表中,我应该得到值 1995,因为在区域 1 中,最大年份是 26,在那一年,最大月份是 5。

现在,当我运行我创建的 SQL 查询时,它没有获得正确的值。

SELECT region, MAX(month) month, year, value FROM `numberoffirms` WHERE year IN (SELECT MAX(year) year FROM `numberoffirms` GROUP BY region) GROUP BY region

它得到的值是这个

| region | month | year |   value  |
------------------------------------
|       1|      5|    26| 10000000 |

这显然是错误的,因为我应该得到的值是 1995,尽管它得到了正确的地区、月份和年份。

我在这里的 SQL 查询代码有什么问题?

最佳答案

您可以在子查询中简单地使用 order by 和 limit 1:

Select * from numberoffirms t1 where id=
  (SELECT id FROM numberoffirms t2 
  where t1.region=t2.region
  order by year desc,month desc,value desc
  limit 1);

我在我的 PC 中创建了你的表和值并测试了查询,它工作正常。

关于MySQL 查询没有得到正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37509597/

相关文章:

javascript - 实现打开/关闭标签功能的最佳方式

mysql - 在 MySQL 或 R 中对分析数据进行下采样

python - 通过子进程的 mysql 不起作用

mysql - GitLab 工作陷入停滞

Mysql建表(select)跨服务器查询

php - 由于文件夹权限,无法在文件夹 csvfile 下创建 csv 文件

python - 日期时间传递值从 python 到 mysql

php - 将 mysql 中的数据从 1252 转换并显示为 UTF-8

php - 使用 $_POST 值更新查询

mysql - 通过mysql中的触发器在另一个表上复制更新的行