Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何通过检查两列值来获得每组的最高值_Mysql_Sql_Group By_Subquery_Inner Join - Fatal编程技术网

Mysql 如何通过检查两列值来获得每组的最高值

Mysql 如何通过检查两列值来获得每组的最高值,mysql,sql,group-by,subquery,inner-join,Mysql,Sql,Group By,Subquery,Inner Join,我有下面的测试表 USER_ID | YEAR | MONEY ---------------------- 1 | 0 | 0 1 | 12 | 12 1 | 48 | 12 2 | 15 | 15 2 | 10 | 20 3 | 0 | 0 因此,我试图返回一行有最高的钱。例如,行返回如下所示 USER_ID | YEAR | MONEY ----------------------

我有下面的测试表

USER_ID | YEAR | MONEY
----------------------
  1     |  0   |  0
  1     | 12   | 12
  1     | 48   | 12
  2     | 15   | 15
  2     | 10   | 20
  3     |  0   |  0
因此,我试图返回一行有最高的钱。例如,行返回如下所示

USER_ID | YEAR | MONEY
----------------------
  1     | 12   | 12
  1     | 48   | 12
  2     | 10   | 20
  3     |  0   |  0
但是由于用户ID 1具有相同的货币价值,我想检查该货币金额的最高年份并返回结果。预期的结果应该是

USER_ID | YEAR | MONEY
----------------------
  1     | 48   | 12
  2     | 10   | 20
  3     |  0   |  0
有可能这样吵架吗

这里是在线测试您的查询的链接

您可以尝试使用相关子查询

select userid, moneyval,max(year) as year
from
(
select * from t a
where moneyval in 
(select max(moneyval) from t b where a.userid=b.userid)
)A group by userid, moneyval
输出:

userid  moneyval    year
1        12          48
2        20          10
3        0           0

您可以使用“不存在”来获取具有最大货币(和年份)值的行:

请参阅。
结果:


此查询将仅返回2行。查询将根据我的预期表结果跳过行id 2。你可以在这里查一下,谢谢!这是可行的,但基于我的实际表格。跳过某些行。我将根据这个记录另一个问题
  select t.*
  from test_table t 
  where not exists (
    select 1 from test_table
    where userid = t.userid and (
      money > t.money or (money = t.money and year > t.year)
    )  
  ) 
| userid | money | year |
| ------ | ----- | ---- |
| 1      | 12    | 48   |
| 2      | 20    | 10   |
| 3      | 0     | 0    |