SQL group by只返回第一行

时间:2013-02-08 09:57:41

标签: sql group-by having-clause

我有一个包含两列'id'和'layout plan'

的表

我需要查看具有相同布局规划的所有行

我使用此查询。

select * 
from project_layout 
group by layout_plan 
having count(layout_plan) > 1

但是这个查询只返回第一行。

我希望看到所有具有相同布局规划的组。

3 个答案:

答案 0 :(得分:9)

如果使用未在没有聚合的情况下分组的列,则MySQL以外的数据库会出错。但是MySQL将从组的行中返回一个不确定的值。

要检索具有多行的layout_plan组中的所有行,您可以使用:

select  *
from    project_layout
where   layout_plan in
        (
        select  layout_plan 
        from    project_layout 
        group by 
               layout_plan 
        having 
               count(*) > 1
        )

答案 1 :(得分:2)

试试这个,

select * from project_layout 
where layout_plan in (select layout_plan   
            from project_layout    
            group by layout_plan   
            having count(layout_plan) > 1)

答案 2 :(得分:1)

Select  a.*
from    project_layout
        INNER JOIN 
        (
            select  layout_plan 
            from    project_layout 
            group   by  layout_plan 
            having  count(layout_plan ) > 1
        ) b ON a.layout_plan = b.layout_plan

要获得更快的效果,请在列index

上添加layout_plan