例如:
SELECT MODE(field) FROM table
在另一种模式下,我可以使用用户定义函数来获取列的最常见值吗?
我知道我可以这样做:
SELECT field, COUNT(*) as total FROM table GROUP BY field ORDER BY total DESC LIMIT 1
但我必须在同一个MySQL语句中查询其他数据,所以我必须使用用户定义的函数。
谢谢。
答案 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;