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));
并收到错误消息“群组功能的使用无效。”
答案 0 :(得分:4)
我错过了什么。你为什么不这样做?
select * from data order by GREATEST(num1,num2) desc limit 0,1;
如果只有两个数字中的最大(),那么如果存在平局,则无法保证可重复行为。如果史密斯的num1是70而Jones的num2是70呢?每次执行查询时,任何一个都可以首先出现。如果要进行可重复选择,请添加另一个排序列,以保证可预测的排序(例如,对主键进行排序)。