您现在的位置是: 首页 > MySQL MySQL
MySQL ANY_VALUE() 函数
冬寂
2022-07-27 15:30:07
【MySQL】
4958人已围观
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
,它包含了 id
, user
, 和 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
模式禁用掉的结果完全一样。
相关文章
随机图文
-
Elasticsearch原理讲透 典型应用ELK日志分析系统
反向索引又叫倒排索引,是根据文章内容中的关键字建立索引。搜索引擎原理就是建立反向索引。Elasticsearch 在 Lucene 的基础上进行封装,实现了分布式搜索引擎。 Elasticsearch 中的索引、类型和文档的概念比较重要,类似于 MySQL 中的数据库、表和行。Elasticsearch 也是 Master-slave 架构,也实现了数据的分片和备份。 Elasticsearch 一个典型应用就是 ELK 日志分析系统。 -
网站收藏,不定时更新
网站收藏 -
ThinkPHP插件集合
这里收录了ThinkPHP的相关插件和扩展,数据库,验证和权限控制 -
多巴胺,催产素,血清素,内啡肽
神经调节(DOSE),稍慢一些,但能自动调节情绪,根据平时的经验引导你做正确的事情;它的反应速度比情绪慢,但也是自动的!它不但不会让你产生抗拒,而且还会让你感觉很好