SELECT MODE(field) FROM table
在另一種模式,什麼用戶定義的函數我可以用它來獲取某列的最常見的價值?
我知道我可以這樣做:
SELECT field, COUNT(*) as total FROM table GROUP BY field ORDER BY total DESC LIMIT 1
但是我要查詢在同一個MySQL的聲明等數據量太大,所以我必須使用一個用戶定義的函數。
謝謝。
SELECT MODE(field) FROM table
在另一種模式,什麼用戶定義的函數我可以用它來獲取某列的最常見的價值?
我知道我可以這樣做:
SELECT field, COUNT(*) as total FROM table GROUP BY field ORDER BY total DESC LIMIT 1
但是我要查詢在同一個MySQL的聲明等數據量太大,所以我必須使用一個用戶定義的函數。
謝謝。
這是鏈接到MySQL's documentation on aggregate functions。看起來他們沒有任何「模式」,所以我會說你的第二個查詢可能是你最好的選擇。
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;
哪些數據是你想獲得?我認爲你需要在這裏發出多個查詢 – ManseUK