ANY_VALUE
功能描述
ANY_VALUE函数用于解决查询字段不属于GROUP BY
字段的问题,当select
的字段没有出现在GROUP BY
子句中,可使用ANY_VALUE函数让语句正常执行。
注意事项
该功能仅在Vastbase G100 V2.2 Build 10(Patch No.9)及以后版本支持。
语法格式
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 "test_any_value.address" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT name,COUNT(address) AS count,address FROM test_any_va...
^
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)