任何價值()

 SELECT item.item_id, ANY_VALUE(uses.tag) tag,   
        COUNT(*) number_of_uses
  FROM item 
  JOIN uses ON item.item_id, uses.item_id
 GROUP BY item.item_id

顯示名為 item 的表中的行,相關行的計數以及相關表中名為 uses 的值之一。

你可以把這個 ANY_VALUE() 函式想象成一種奇怪的聚合函式。它不是返回計數,總和或最大值,而是指示 MySQL 伺服器從所討論的組中任意選擇一個值。這是一種解決錯誤 1055 的方法。

在生產應用程式中的查詢中使用 ANY_VALUE() 時要小心。

它應該被稱為 SURPRISE_ME()。它返回 GROUP BY 組中某行的值。它返回哪一行是不確定的。這意味著它完全取決於 MySQL 伺服器。形式上,它返回一個不可預測的值。

伺服器不選擇隨機值,它比這更糟糕。每次執行查詢時它都返回相同的值,直到它沒有。當表增長或縮小,或者伺服器具有更多或更少的 RAM,或者伺服器版本發生變化,或者火星逆行時(無論這意味著什麼),或者根本沒有任何理由,它可以改變或不改變。

你被警告了。