Sql 分组方式与子查询
我想知道是否可以在GROUPBY中使用子查询?以sqlite为例,使用以下表格: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 ---------- ----------
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子句中,否则此类查询的结果不会识别哪个组是哪个组。您希望通过此操作实现什么?