实际上,我几乎忘记了如何使用 SQL 来执行此操作,问题是我有一个 SQL 选择语句,例如:
SELECT COUNT(*) NAME FROM `SomeTable` WHERE `SomeID` = xxx GROUP BY `Field`
它确实返回一个包含一个字段和许多包含数字的记录的表。我想要的是获得这些记录中最大数量的单个值。
它应该可以帮助你。只使用MAX()
功能
SELECT MAX(COUNT(*)) FROM `SomeTable` WHERE `SomeID` = xxx GROUP BY `Field`
只需添加限制:
SELECT COUNT(`NAME`) AS `NUM` FROM `SomeTable` WHERE `SomeID` = xxx GROUP BY `Field` ORDER BY `NUM` DESC LIMIT 1
select max(name) from
(
SELECT COUNT(*) NAME FROM `SomeTable` WHERE `SomeID` = xxx GROUP BY `Field`)a
SELECT COUNT(*) NAME
FROM `SomeTable`
WHERE `SomeID` = xxx
GROUP BY `Field`
order by NAME desc
limit 1
我想要的是获得这些记录中最大数量的单个值。
试试这个:
SELECT t1.*
FROM SomeTable t1
(
SELECT SomeID, Max(Field) MaxField
FROM SomeTable
GROUP BY SomeID
) t2 ON t1.SomeID = t2.SomeID AND t1.Field = t2.MaxField
WHERE t1.SomeID = xxx
如果您只想要针对过滤器的最高值的单个结果,只需使用 Max:
SELECT MAX(MyField) NAME
FROM `SomeTable`
WHERE `SomeID` = xxx;
或者,如果您想要按另一列分组的聚合,则语法如下:
SELECT Name, MAX(MyField) as MaxOfMyField -- Or COUNT(MyField) if you want the Count
FROM `SomeTable`
WHERE `SomeID` = xxx
GROUP By Name;
MAX 函数的语法是:
SELECT MAX(expression )
FROM tables
WHERE predicates;
例子
SELECT MAX(salary) as "Highest salary"
FROM employees;