2011-06-24 8 views
0

を数えるのMySQL等の量、私はポストcomment_typeはを保ったまま、テーブルを持っている明確なクエリ

PostExtras 
- id 
- amount 
- post_id (foreign key) 
- comment_type (foreign key) 
- ... 

comment_type 
- id 
- name 

私は重複がコメント型を持っている投稿を選択します。

例:

- id  - amount - post_id - comment_type 
1   20   23   1 
2   45   23   2 
3   80   28   1 
4   78   28   2 
5   56   23   1 

行1と5は、実際には同じです。

+0

を使うのか? –

+0

別名とは反対の意味ですか? –

+0

2つ以上の同じcomment_typeを持つ投稿を意味します。 – gandil

答えて

0
SELECT post_id FROM PostExtras 
GROUP BY post_id, comment_type 
HAVING COUNT(comment_type) > 1 
+0

idは自動インクリメントされます。インデックス作成以外の意味はありません。 – gandil

+0

はい。誤読して更新しました。 – ChrisBint

1

私は右のそれを理解していれば、どのような基盤の上に重複COUNT, GROUP BY and HAVING

SELECT *, COUNT(*) AS itemcount FROM PostExtras 
GROUP BY post_id, comment_type 
HAVING itemcount >= 2 
+0

グループに追加されていないすべてのフィールドがあるため、これは機能しません。また、post_id、comment_type以外でグループ化することはできません。他の列ごとに異なる値が表示され、不正なデータが返されます。 – ChrisBint

+0

私はpost_idにWHERE句を追加しましたが、あなたの他の懸念事項について - すべてのフィールドをMySQLのGROUP BY句に追加する必要はありません。 – cypher

+0

現時点では確認できませんが、追加のフィールドをグループ化せずに追加することは奇妙に思えます。また、where句を追加すると(単一行の選択を示す)、これをほぼ確実に破ることになります。 – ChrisBint

関連する問題