1

「id」と「レイアウトプラン」の2つの列を含むテーブルがあります

同じレイアウトプランを持つすべての行を確認する必要があります

このクエリを使用します。

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

しかし、このクエリは最初の行のみを返しています。

同じレイアウトプランのグループをすべて表示したい。

4

3 に答える 3

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
        )
于 2013-02-08T10:00:05.407 に答える
2

これを試して、

select * from project_layout 
where layout_plan in (select layout_plan   
            from project_layout    
            group by layout_plan   
            having count(layout_plan) > 1)
于 2013-02-08T10:02:41.150 に答える
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パフォーマンスを高速化するには、 on 列を追加しますlayout_plan

于 2013-02-08T10:01:28.373 に答える