任何价值()

 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,或者服务器版本发生变化,或者火星逆行时(无论这意味着什么),或者根本没有任何理由,它可以改变或不改变。

你被警告了。