在mysql中添加一个临时列,其中的条目是表的相同条目的计数

时间:2016-07-11 04:24:25

标签: mysql sql count relational-database

所以我有这个数据库,其中包含一个文件列表。文件可以更新,但在回滚的情况下仍然保留以前的版本。我想知道的是如何添加一个临时列,其中包含该文件以前版本的数量。

基本上,我如何在mysql中创建一个临时列,其中的条目依赖于主表中的某些内容?

CREATE TABLE Files(
    file_id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT,
    student_id INTEGER,
    group_id INTEGER,
    submission_number INTEGER,
    submission_type VARCHAR(10),
    FOREIGN KEY (student_id) REFERENCES Student (student_id) ON DELETE CASCADE,
    FOREIGN KEY (group_id) REFERENCES Groups(group_id)ON DELETE CASCADE
);

提交由其submission_number和submission_type定义。因此submission_type 0将是一个赋值,1将是一个项目,2将是一个测验,依此类推。 submission_number将是我们上传的提交类型的分配。因此,例如,第三个测验将具有submission_type = 2和submission_number = 3.我们可以更新文件,因此我们可以上传具有相同submission_type和submission_number的新文件。我想要返回的是一个表格,其中包含每次提交上传的次数。

所以,如果我有下表

+---------+------------+----------+-------------------+-----------------+
| file_id | student_id | group_id | submission_number | submission_type |
+---------+------------+----------+-------------------+-----------------+
|       1 |      10049 |        1 |                 1 |   assignment    |
|       2 |      10032 |        1 |                 1 |   assingment    |
|       3 |      10032 |        1 |                 2 |   quiz          |
|       4 |      10032 |        1 |                 3 |   assingment    |
+---------+------------+----------+-------------------+-----------------+

我想要退回表格

+-------------------+-----------------+-------+
| submission_number | submission_type | count |
+-------------------+-----------------+-------+
|                 1 |      assignment |   2   |
|                 2 |      quiz       |   1   |
|                 3 |      assignment |   1   |
+-------------------+-----------------+-------+

考虑它的另一种方式,如果submission_number和submission_type是坐标,则说x,y然后我想计算相同点出现在表中的次数。因此,点(1,赋值)出现两次,因此计数为2。

1 个答案:

答案 0 :(得分:1)

你不需要另外一张桌子就可以做到这一点。只需使用GROUP BY编写查询。

SELECT submission_number, submission_type, COUNT(file_id) FROM Files GROUP BY submission_number, submission_type;

working demo