2016-12-17 15 views
0

一部のコーパスの辞書内の頻出語の数を更新しています。 1つのクエリで実行できません。代わりに、カウントデータをテンポラリテーブルに集めてから、辞書をINSERT/UPDATEします。 1つのコマンドでcountInCorpusを更新するのに適切な構文が何であるか疑問に思う。重複して選択更新から挿入INSERT UPDATE = count(*)

現在の構文:( "不明な列 'theCount' フィールドリストで" その結果)ワンステップの構文を失敗

INSERT INTO temp_table (name, countInCorpus) 
    SELECT name,count(*) AS theCount 
    FROM corpus 
    GROUP BY name having theCount > 9); 

INSERT INTO dict (name, countInCorpus) 
    SELECT name, countInCorpus 
    FROM temp_table ON DUPLICATE KEY UPDATE dict.countInCorpus=temp_table.countInCorpus; 

INSERT INTO dict (name, countInCorpus) 
    SELECT name,count(*) AS theCount 
    FROM corpus 
    GROUP BY name having theCount > 9 
    ON DUPLICATE KEY UPDATE dict.countInCorpus=theCount; 

答えて

1

使用VALUES()

INSERT INTO dict (name, countInCorpus) 
    SELECT name,count(*) AS theCount 
    FROM corpus 
    GROUP BY name havingtheCount > 9 
    ON DUPLICATE KEY UPDATE dict.countInCorpus = VALUES(countInCorpus); 
+0

ワーキング。ありがとう。 (タイプミスがあることに注意してください - スレッシュホールド値は第4ラインのtheCount> 9にはありません) – user3127882

関連する問題