2

私は次のようなテーブルを持っています:

+-------+-----+
|country|prop1|
+-------+-----+
|RO     |  1  |
|RO     |  2  |
|UK     |  1  |
|IT     |  2  |
+-------+-----+

prop1がnullでない行をカウントしたいので、次のselectを使用します。

SELECT `country`, COUNT(*) as number FROM table GROUP BY `country`;

これは戻ります:

+-------+------+
|country|number|
+-------+------+
|RO     |  2   |
|UK     |  1   |
|IT     |  1   |
+-------+------+

ただし、次のものが必要です。

+-------+------+
|country|number|
+-------+------+
|RO     |  2   |
|UK     |  1   |
|IT     |  1   |
|FR     |  0   |
+-------+------+

このようなものをSQLで直接書くことができると思いますか?「country」の可能な値のリストと、テーブルにない場合はデフォルト値(0)を指定するようなことを考えていました。

4

2 に答える 2

4

あなたの例では、どこからFR来たのかは明らかではありません。

MySQLその中に国のリストがないので、国コードはどこかから取得する必要があります。

すべての国が内部にある場合mytablepropおそらくに設定されている場合NULL):

SELECT  country, COUNT(prop) as number
FROM    mytable
GROUP BY
        country

別のテーブルに国がある場合(および国が欠落している可能性がありますmytable):

SELECT  c.id, COUNT(m.prop) as number
FROM    countries c
LEFT JOIN
        mytable m
ON      m.country = c.id
GROUP BY
        c.id
于 2009-09-28T15:02:17.007 に答える
1

私はあなたがすべての国とのテーブルを設定する必要があると思います。国のキーを使用するように現在のテーブルを変更するのが最善です。左結合ができるように。その国の小道具がない場合はNULL値で、すべての国が表示されます。

于 2009-09-28T15:04:00.780 に答える