2016-12-10 7 views
0

をしたいときに私は次のクエリ持って1を返して:Countは、私が0

SELECT 
    l.id, l.name, l.store_id, COUNT(1) as reviewCount 
FROM 
    locations l 
LEFT OUTER JOIN 
    reviews r ON l.id=r.location_id 
GROUP BY 
    l.id 
ORDER BY 
    reviewCount DESC 

を私は2つのテーブルを持っています。場所、レビュー。レビューはstore_idを格納します。私はすべての場所を取得し、それぞれの場所にreviewCountを含めたいと思います。レビューがない場所がある場合は、reviewCountが1になります。ただし、その場所のreviewCountを0にしたいとします。

ありがとうございました!あなたは第二の表の一致をカウントするので、そのテーブルから列をカウントする

+0

「COUNT(1)as reviewCount'?なぜか 'COUNT(*)' –

+0

引数に参加してください:http://stackoverflow.com/questions/1221559/count-vs-count1 – KKendall

答えて

2

SELECT l.id, l.name, l.store_id, COUNT(r.location_id) as reviewCount 
. . . 

何が起こるはCOUNT(1)がが返される行をカウントしているということです。 2番目のテーブルの値がNULLの行が返されています。

関連する問題