MySQL用户定义函数用于获取列的模态值?

时间:2011-11-16 04:39:13

标签: mysql user-defined-functions mode

例如:

SELECT MODE(field) FROM table

在另一种模式下,我可以使用用户定义函数来获取列的最常见值吗?

我知道我可以这样做:

SELECT field, COUNT(*) as total FROM table GROUP BY field ORDER BY total DESC LIMIT 1

但我必须在同一个MySQL语句中查询其他数据,所以我必须使用用户定义的函数。

谢谢。

2 个答案:

答案 0 :(得分:0)

这是MySQL's documentation on aggregate functions的链接。看起来他们没有任何“模式”,所以我会说你的第二个查询可能是你最好的镜头。

答案 1 :(得分:0)

MySQL不支持用户定义的聚合函数(PostgreSQL does,因为它的价值)。你不能使用UDF在MySQL中做你想做的事。

例如,您可以通过将模式计算放在派生表子查询中来执行此操作:

SELECT t.*
FROM (SELECT field AS mode, COUNT(*) as total FROM table 
      GROUP BY field ORDER BY total DESC LIMIT 1) AS m
JOIN table t ON m.mode = t.field;