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、名称和 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() 上排序,您将无法保证可重复的行为。如果史密斯的 num1 是 70,琼斯的 num2 是 70 怎么办?每次执行查询时,任何一个都可能首先出现。如果要进行可重复的选择,请添加另一个排序列,以保证可预测的排序(例如,对主键进行排序)。