id | name | num1 | num2
0 | Johnny | 0 | 7
1 | Jason | 50 | 3
2 | John | 60 | 1
3 | Tom | 5 | 70
如果我运行以下查询,我会得到以下结果,这是我应该得到的:SELECT MAX(GREATEST(num1, num2)) FROM data
但是,我需要获取的是该行的完整信息。
所以因为我得到了 70,所以我希望能够访问该行的 num1、name 和 id。
这可能吗?
我执行了以下操作,SELECT * FROM data WHERE num1 = MAX(GREATEST(num1, num2)) OR num2 = MAX(GREATEST(num1, num2));
并收到一条错误消息, “群组功能使用无效。”
最佳答案
我是不是漏掉了什么。为什么不呢?
select * from data order by GREATEST(num1,num2) desc limit 0,1;
如果出现平局,如果您仅对两个数字中的 greatest() 进行排序,则无法保证可重复的行为。如果 Smith 的 num1 是 70 而 Jones 的 num2 是 70 怎么办?每次执行查询时,任何一个都可以作为第一个出现。如果您想要可重复的选择,请添加另一个排序列以保证可预测的排序(例如,按主键排序)。
关于mysql - 获取2列的最大值和数字最大的行的全行信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22135679/