SQL group by只返回第一行
我有一个表,其中包含两列“id”和“layout plan” 我需要查看所有具有相同平面布置图的行 我使用这个查询SQL group by只返回第一行,sql,group-by,having-clause,Sql,Group By,Having Clause,我有一个表,其中包含两列“id”和“layout plan” 我需要查看所有具有相同平面布置图的行 我使用这个查询 select * from project_layout group by layout_plan having count(layout_plan) > 1 但是这个查询只返回第一行 我想查看具有相同布局平面图的所有组。如果使用未分组但没有聚合的列,则MySQL以外的数据库将显示错误。但是MySQL将从组的行中返回一个不确定的值 要检索包含多行的layout\u p
select *
from project_layout
group by layout_plan
having count(layout_plan) > 1
但是这个查询只返回第一行
我想查看具有相同布局平面图的所有组。如果使用未分组但没有聚合的列,则MySQL以外的数据库将显示错误。但是MySQL将从组的行中返回一个不确定的值 要检索包含多行的
layout\u plan
组中的所有行,可以使用:
select *
from project_layout
where layout_plan in
(
select layout_plan
from project_layout
group by
layout_plan
having
count(*) > 1
)
如果使用未分组但没有聚合的列,则MySQL以外的数据库将出现错误。但是MySQL将从组的行中返回一个不确定的值 要检索包含多行的
layout\u plan
组中的所有行,可以使用:
select *
from project_layout
where layout_plan in
(
select layout_plan
from project_layout
group by
layout_plan
having
count(*) > 1
)
为了提高性能,请在布局平面图
为了提高性能,请在“布局平面图”列上添加一个索引
select * from project_layout
where layout_plan in (select layout_plan
from project_layout
group by layout_plan
having count(layout_plan) > 1)
试试这个
select * from project_layout
where layout_plan in (select layout_plan
from project_layout
group by layout_plan
having count(layout_plan) > 1)
可能您在每个组计划中都有一条记录,因此您的子句count(layout\u plan)>1会过滤其他记录,并且您只会在记录上看到计数(layout\u plan)超过1的记录,可能每个组计划中都有一条记录,因此您的子句count(layout\u plan)>1
过滤其他记录,您只能在记录上看到(id)
的计数(布局平面图)超过1组的记录,这些记录的计数(*)往往都等于1
@Andomar Youzah!我是一个多么愚蠢的人:/现在我的答案被编辑了。(id)
的组往往都有count(*)=1
@Andomar Youzah!我现在是一个多么愚蠢的人啊。MySQL被明确地记录为从不确定的行而不是第一行()返回值。我想你知道这一点,但这个答案正在其他地方引用。@GordonLinoff:是的,“它遇到的第一个值”是不确定的。我会更新答案让它更清楚。现在我明白你最初的写作方式了。微妙的正确,但不幸的是容易被误解。MySQL被明确地记录为从不确定的行而不是第一行()返回值。我想你知道这一点,但这个答案正在其他地方引用。@GordonLinoff:是的,“它遇到的第一个值”是不确定的。我会更新答案让它更清楚。现在我明白你最初的写作方式了。微妙的正确,但不幸的是容易被误解。