VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

ANY_VALUE

功能描述

ANY_VALUE函数用于解决查询字段不属于GROUP BY字段的问题,当select的字段没有出现在GROUP BY子句中,可使用ANY_VALUE函数让语句正常执行。

注意事项

无。

语法格式

any_value(expression)

参数说明

expression

指定的列名,必选参数。

示例

1、创建测试表并插入数据。

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');

2、假如,需要统计每个人的地址数量,可以执行如下语句。

SELECT name,COUNT(address) AS count,address FROM test_any_value GROUP BY name;

返回结果如下,由于查询字段不属于GROUP BY字段,执行结果报错。

ERROR:  column "name" does not exist
LINE 1: SELECT name,COUNT(address) AS count,addressFROM test_any_val...
               ^
CONTEXT:  referenced column: name

3、使用ANY_VALUE函数执行查询。

SELECT name, COUNT(address) AS count, any_value(address) FROM test_any_value GROUP BY name;

返回结果如下,查询成功:

 name | count |    any_value
------+-------+------------------
 Adam |     1 | Address of Adam
 Tom  |     2 | Address 1 of Tom
(2 rows)