MySQL查询没有得到正确的值

时间:2016-05-29 11:54:48

标签: 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查询代码在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

您只需在子查询中使用order by和limit 1:

controle = true

我在我的电脑上创建了你的表和值并测试了查询,它运行正常。

答案 1 :(得分:0)

MySql中,它有点复杂:

select n2.* from numberoffirms n2
join(
      select n1.region, n1.year, max(n1.month) as month numberoffirms n1
      join (select region, max(year) as year from numberoffirms group by region) s1
         on n1.region = s1.region and n1.year = s1.year
      group by n1.region, n1.year) s2 
  on n2.region = s2.region and n2.year = s2.year and n2.month = s2.month