如何使用mysql创建一个具有运行的字数总和的列?

如何使用mysql创建一个具有运行的字数总和的列?,mysql,Mysql,我使用下面的sql组合两个表,然后计算结果 SELECT td.word, COUNT( instance ) AS wordcount FROM ws_words td LEFT JOIN ws_missed_words t ON ( t.wordID = td.wordID ) WHERE quizID =1 GROUP BY td.word 结果表明 ***************************** | word

我使用下面的sql组合两个表,然后计算结果

SELECT td.word, COUNT( instance ) AS wordcount
        FROM ws_words td
        LEFT JOIN ws_missed_words t ON ( t.wordID = td.wordID )
        WHERE quizID =1
        GROUP BY td.word
结果表明

*****************************
|  word  |      wordcount   |
*****************************
|  list  |         3        |
|  miss  |         1        |
|  skip  |         1        |
| another|         0        |
我想在此基础上再增加一列。我想对wordcount列进行运行求和,并将其放入自己的名为total的列中,如下所示

想要的结果

我试过以下方法

SELECT td.word, COUNT( instance ) AS wordcount, SUM(wordcount) AS totalwordcount
FROM ws_words td
LEFT JOIN ws_missed_words t ON ( t.wordID = td.wordID )
WHERE quizID =1
GROUP BY td.word
但是我得到了错误

#1054 - Unknown column 'wordcount' in 'field list'
所以接下来我试着

SELECT atable.word, atable.wordcount, SUM(atable.wordcount) AS totalwordcount FROM
(SELECT td.word, COUNT( instance ) AS wordcount
FROM ws_words td
LEFT JOIN ws_missed_words t ON ( t.wordID = td.wordID )
WHERE quizID =1
GROUP BY td.word) AS atable
但是我得到了这样的东西

************************************************
|  word  |      wordcount   |   totalwordcount |
************************************************
|  list  |         1        |         5        |
问题:

我怎样才能创建一个具有字数总和的列

更新草莓的方法给了我下面的代码


它似乎是对每个单词进行排序,因此最低的字数从1开始,然后如果有两个字数相等的单词,它会按字母顺序列出它们

未经测试,因为您没有给我们任何测试,但有一种方法可能是这样的

 SELECT x.*, COUNT(*) running
   FROM
      ( SELECT td.word
                  , COUNT( t.instance ) wordcount
               FROM ws_words td
               LEFT 
               JOIN ws_missed_words t 
                 ON t.wordID = td.wordID 
              WHERE td.quizID = 1 
              GROUP 
                 BY td.word
      ) x
   JOIN
      ( SELECT td.word
             , COUNT( t.instance ) wordcount
          FROM ws_words td
          LEFT 
          JOIN ws_missed_words t 
            ON t.wordID = td.wordID 
         WHERE td.quizID = 1 
         GROUP 
            BY td.word
      ) y
     ON y.wordcount < x.wordcount
     OR y.wordcount = x.wordcount
    AND y.word < x.word
  GROUP
     BY x.word;

我为答复缓慢而道歉。我已经用你的方法的结果和我认为正在发生的事情更新了我的问题。仍然没有DDL,所以我不打算详细讨论这个问题,但是如果用SUM替换COUNT会发生什么?哦,你可能想把我的条件用括号括起来,就像这样。。。在y.wordcount| word | wordcount | running | ************************************************* | another| 0 | 1 | | miss | 1 | 2 | | skip | 1 | 3 | | list | 3 | 4 |
 SELECT x.*, COUNT(*) running
   FROM
      ( SELECT td.word
                  , COUNT( t.instance ) wordcount
               FROM ws_words td
               LEFT 
               JOIN ws_missed_words t 
                 ON t.wordID = td.wordID 
              WHERE td.quizID = 1 
              GROUP 
                 BY td.word
      ) x
   JOIN
      ( SELECT td.word
             , COUNT( t.instance ) wordcount
          FROM ws_words td
          LEFT 
          JOIN ws_missed_words t 
            ON t.wordID = td.wordID 
         WHERE td.quizID = 1 
         GROUP 
            BY td.word
      ) y
     ON y.wordcount < x.wordcount
     OR y.wordcount = x.wordcount
    AND y.word < x.word
  GROUP
     BY x.word;