您现在的位置是: 首页 > MySQL MySQL
MySQL ANY_VALUE() 函数
冬寂
2022-07-27 15:30:07
【MySQL】
5996人已围观
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 模式禁用掉的结果完全一样。
相关文章
随机图文
-
域名类型
域名后缀根据用途、类型和管理机构的不同,大致分为几种类型。 -
美国政客为什么“害怕”TikTok?
美国政府一定要针对 TikTok ,和两个因素有关:一是 TikTok 不可控的全国性影响力;二是 TikTok 构建起的「兴趣壁垒」。这两者都和算法有关。一个技术越发展,就越会跟周边的系统结网。技术本身也许会被超过,但这张网络,随着卷入的人越来越多,它只会越来越坚固。 -
SQL取分组的前几条/指定条数(原生SQL与TP6写法)
SQL取分组的前几条/指定条数,原生取法,tp6方法 -
设备识别,layui设备识别layui.device()
设备识别,layui设备识别layui.device()
