Sql 分组方式与子查询

Sql 分组方式与子查询,sql,sqlite,Sql,Sqlite,我想知道是否可以在GROUPBY中使用子查询?以sqlite为例,使用以下表格: create table t (foo int, bar int); insert into t values (100, 100); insert into t values (200, 200); 然后运行此查询: select max(bar), foo from t group by (select 1); 返回 max(bar) foo ---------- ----------

我想知道是否可以在GROUPBY中使用子查询?以sqlite为例,使用以下表格:

create table t (foo int, bar int);
insert into t values (100, 100);
insert into t values (200, 200);
然后运行此查询:

select max(bar), foo from t group by (select 1);
返回

max(bar)    foo       
----------  ----------
200         200    

我不知道那是什么意思?似乎无论我在group by中输入了什么子查询,sqlite仍然会返回相同的“答案”。

当您使用group by时,数据库会为每一行计算您在group by中给出的表达式,并为此表达式的每个不同结果创建一个组

在查询中,
(选择1)
会为所有行生成相同的值,因此所有行最终都位于同一组中

使用不依赖于表行的表达式是没有意义的。 如果要使用查找其他值,则使用子查询可能会有些帮助:

> create table users(id, name);
> insert into users values (1, 'Tom'), (2, 'Dick'), (3, 'Harry');
> create table admins(userid);
> insert into admins values (1), (3);
> select group_concat(name)
  from user
  group by (select 1
            from admins
            where userid = user.id);
Dick
Tom,Harry

但是,除非将相同的子查询添加到SELECT子句中,否则此类查询的结果不会识别哪个组是哪个组。

您希望通过此操作实现什么?