您现在的位置是: 首页 >  MySQL MySQL

MySQL ANY_VALUE() 函数

冬寂 2022-07-27 15:30:07 【MySQL】 4405人已围观

MySQL ANY_VALUE() 函数返回指定列中的任意一个值,它用在包含了 GROUP BY 的语句中,以抑制 ONLY_FULL_GROUP_BY 导致的错误。

ANY_VALUE() 语法

这里是 MySQL ANY_VALUE() 函数的语法:

ANY_VALUE(column_name)

参数

  • column_name

  • 必需的。 一个列名。

返回值

MySQL ANY_VALUE() 函数返回指定列中的任意一个值。

ANY_VALUE() 示例

为了演示 ANY_VALUE() 函数的用法,让我们使用如下语句创建一个表 test_any_value,它包含了 iduser, 和 address 三个列:

CREATE TABLE test_any_value (

    id INT AUTO_INCREMENT PRIMARY KEY,

    name VARCHAR(255) NOT NULL,

    address VARCHAR(255) NOT NULL

);

然后,让我们再插入几条数据:

INSERT INTO test_any_value (name, address)

VALUES

    ('Tom', 'Address 1 of Tom'),

    ('Tom', 'Address 2 of Tom'),

    ('Adam', 'Address of Adam');

让我们看一下表中的数据:

+----+------+------------------+

| id | name | address          |

+----+------+------------------+

|  1 | Tom  | Address 1 of Tom |

|  2 | Tom  | Address 2 of Tom |

|  3 | Adam | Address of Adam  |

+----+------+------------------+

现在,我们想要统计每个人的地址的数量,并显示每个人的任意一个地址:

SELECT name,

    COUNT(address) AS count,

    address

FROM test_any_value

GROUP BY name;

当我们运行这个语句的时候,MySQL 返回了一个错误:”ERROR 1055 (42000): Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ’testdb.test_any_value.address’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by“。

这里,让我们使用 ANY_VALUE() 解决这个问题:

+------+-------+------------------+

| name | count | address          |

+------+-------+------------------+

| Tom  |     2 | Address 1 of Tom |

| Adam |     1 | Address of Adam  |

+------+-------+------------------+

现在,MySQL 没有给出错误并返回了我们期望的结果。 这与在不使用 ANY_VALUE() 并将 ONLY_FULL_GROUP_BY 模式禁用掉的结果完全一样。


很赞哦! ( 55 )

站点信息

  • 建站时间:2020-08-10
  • 文章统计100篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我