2017-07-15 22 views
1

私は検索して、私が達成しようとしているものと同様のポストを見つけましたが、正確な解決策はありません。私はグループ化された記事のテーブルを持っています(共通の情報を持つ記事)。グループに所属する記事が少なくとも10件ある上記の記事を選択する必要があります。MYSQLサブクエリwhere count in/having

Group ID | Article ID | Posting Date 
------------------------------------ 
| 1  | 1234  | 2017-07-14 
| 1  | 5678  | 2017-07-14 
| 1  | 9000  | 2017-07-14 
| 2  | 8001  | 2017-07-14 
| 2  | 8002  | 2017-07-14 
------------------------------------ 

SELECT `groupid`, `article_id`, `publish_date` 
FROM `article_group` 
WHERE `groupid` IN (SELECT `groupid`, count(`groupid`) as cnt 
       FROM `article_group` 
       WHERE date(`publish_date`) = '2017-07-14' 
       group by `groupid` 
       having cnt > 10 
       order by cnt desc 
       ) 

私は、サブクエリがちょうど1列を返す必要があります理解し、どのように私は、カウントしてこれを実現してたのですか?

答えて

1

あなたは非常に近いです。サブクエリでは1つの列のみを選択する必要があります。

SELECT `groupid`, `article_id`, `publish_date` 
FROM `article_group` 
WHERE `groupid` IN (SELECT `groupid` 
        FROM `article_group` 
        WHERE date(`publish_date`) = '2017-07-14' 
        GROUP BY `groupid` 
        HAVING COUNT(*) > 10 
        ) 
+0

パーフェクト!ありがとうゴードン。私は単純な解決策があることを知っていた。 – ReeseB

関連する問題