我知道“对应于字段最大值的选择记录”已经详尽解答,但我想知道为什么没有人建议使用ORDER BY子句来获得正确的行。
例如,我有这张表:
| other_field | target_field |
| 1 | 15 |
| 2 | 25 |
| 3 | 20 |
我希望找到与最大other_field
对应的target_field
值(例如,在这种情况下,我想找到2)。
很多人建议使用GROUP和JOIN,但我的第一个想法是使用:
SELECT other_field FROM table ORDER by target_field DESC LIMIT 1;
这有什么问题吗?我能想到的唯一问题是,订购可能需要更长的时间,然后才能找到最大值(尽管另一方面,JOIN也可能需要一段时间)。
谢谢!
编辑:对不起回复的人,我是新来的,我希望收到一些通知的电子邮件:)答案 0 :(得分:1)
是。
它实际上必须在每条记录返回任何数据之前对其进行排序。这是非常低效的。它会返回你想要的东西,但不会以最好的方式返回。聚合函数往往更好,更快。
使用当前查询,一旦达到更高的数据负载,处理和实现将需要很长时间。 (使用较小的数据集,你应该没问题)
答案 1 :(得分:0)
如果您需要一个或多个表中的单个值,那么您必须选择Max和GroupBy
如果您只有一个表并且需要多个列,那么可以使用Order By Desc。
我希望你得到我的观点
答案 2 :(得分:0)
您可以尝试使用以下查询:
select top 1 other_field from tester order by target_field desc;
在Sybase中运行良好。不确定其他数据库。