2つのテーブル/エンティティがあり、非常に単純なシナリオです。MySQL:1つのテーブルからレコードを数え、次に別のテーブルを更新します。
表詩人 - 列:ID、詩人、国家
表国 - 列:idは、国が、カウント
基本的には、1のマッピングを持っている国に詩人自然に多くの人に。たとえば、60カ国から1,000人の詩人がいます。 詩人の各詩人は、国のいずれかの国のidを含む国のフィールドに国番号の国家に割り当てられています。
国のカウント・フィールドはこの国から詩人で詩人の数が含まれています。
私の質問は、の詩人の国家による詩人数を数え上げるためにどのように1つのSQLクエリを使用し、その国の対応する数を更新するのですか?
私が試した:
UPDATE poets, nations SET nations.count = COUNT(poets.id) GROUP BY poets.nation HAVING poets.nation = nations.id
をしかし、それは#1064エラーが発生します。 WHERE句をどこかで組み合わせようとしましたが、まだ動作しません。
ありがとう、それはトリックを動作させる! –
非常に大きなテーブル(500000+レコード)の場合、これは非常に遅くなる可能性があることに注意してください。 – dusoft
また、nations.countがNULL可能でない場合、警告が発生する可能性があります。これに対してIFNULLを使用してください。 UPDATE nations SET count = IFNULL((票数を選択してください)poets.nation = nations.id GROUP BY id)、0); –