2011-11-16 22 views
0

例如:用於獲取列的模態值的MySQL用戶定義函數?

SELECT MODE(field) FROM table 

在另一種模式,什麼用戶定義的函數我可以用它來獲取某列的最常見的價值?

我知道我可以這樣做:

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

但是我要查詢在同一個MySQL的聲明等數據量太大,所以我必須使用一個用戶定義的函數。

謝謝。

+0

哪些數據是你想獲得?我認爲你需要在這裏發出多個查詢 – ManseUK

回答

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; 
相關問題