8
   $sql = "SELECT * FROM cars WHERE COUNT(brand)='4'";
   $results = mysql_query($sql);
   $rows = mysql_fetch_array($results);
   print_r($rows);

テーブル cars には次の列があります。

id brand     price
0  bmw
1  corvette
2  mercedes
3  bmw
4  bmw
5  toyota
6  bmw
7  honda
8  lotus

これが私がやろうとしていることです'cars'.4台の異なる車を持っているすべてのブランドをテーブルから返します. この例では、bmw has 4 4 different cars は同じブランド名の 4 つの異なる行です。そのため、在庫の総数が 4 であるブランドの名前を反映させようとしています。

編集: SELECT * FROM cars LEFT JOIN users ON cars.user_id=users.user_id HAVING count(user_id) = 4 を試しましたが、これはうまくいきませんか?

4

3 に答える 3

12
SELECT brand FROM cars GROUP BY brand HAVING COUNT(brand) = 4

あなたが編集するために:

SELECT t1.brand, t2.email 
FROM cars t1  
LEFT JOIN users t2 ON t1.user_id = t2.user_id 
GROUP BY t1.brand HAVING COUNT(t1.brand) = 4
于 2012-06-23T04:12:48.820 に答える
3

あなたのようなクエリでは、having を使用する必要があると思います

SELECT * FROM cars HAVING COUNT(brand)=4;

グループ化する内容に応じてグループ化する

于 2012-06-23T04:11:29.693 に答える
2

一度に複数の行に対して集計関数 (COUNT) を実行したい。複数のカウントを実行したいときはいつでも、GROUP BY を考える必要があります。

$sql = "SELECT brand FROM cars GROUP BY brand HAVING COUNT(*) >= 4";

このクエリを実行SELECT *すると、ブランドごとに 1 つのランダムな行が取得されます (おそらく ID が小さいもの)。

HAVING 句は、各グループの WHERE として機能します。

于 2012-06-23T04:22:03.700 に答える