来自另一个表的MySql SumIF而不更改值的顺序

时间:2018-11-08 23:16:53

标签: mysql

我希望任何人都可以帮助我完成此任务,因此我在MySql数据库中有2个表:

Table1
+------+------------+
| Name |    Data    |
+------+------------+
| b    | 2018-11-01 |
| c    | 2018-11-01 |
| a    | 2018-11-01 |
| d    | 2018-11-01 |
| e    | 2018-11-01 |
+------+------------+

Table2
+------+------------+------------+
| Name |   Value    |    Data    |
+------+------------+------------+
| b    | Imported   | 2018-11-01 |
| c    | Activation | 2018-11-01 |
| a    | Activation | 2018-11-01 |
| b    | Activation | 2018-11-01 |
| b    | Activation | 2018-11-01 |
| d    | Activation | 2018-11-01 |
| a    | Activation | 2018-11-01 |
+------+------------+------------+

请求的输出是:

+-------+-------+
| Name  | Total |
+-------+-------+
| b     |     2 |
| c     |     1 |
| a     |     2 |
| d     |     1 |
| e     |     0 |
+-------+-------+

注意:所请求表中名称的顺序应与表1中的顺序相同。

我可以通过此查询执行类似的结果:

Select 
   t2.Name
 , SUM(IF(t2.Value != 'Imported, 1, 0)) Total
FROM Table2 t2
WHERE t2.Data = '2018-11-01'
GROUP BY t2.Name

但是结果的名称顺序与表1中的顺序不同,但如下所示:

+-------+-------+
| Name  | Total |
+-------+-------+
| a     |     2 |
| b     |     2 |
| c     |     1 |
| d     |     1 |
| e     |     0 |
+-------+-------+

这就是我只需要名称顺序的原因而需要table1的原因。

如果有人可以帮助我吗?

最好的问候!

1 个答案:

答案 0 :(得分:0)

如果这些只是元素,则可以简单地使用它:

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_find-in-set

ApplicationRole

或者您也可以使用:

FIELD(str,str1,str2,str3,...)

@for(Int32 i = 0; i < this.Model.RoleList.Count; i++ ) {
            <div class="form-group">
                <label asp-for="RoleList[i].Name">Role Name</label>
                <input asp-for="RoleList[i].Name" class="form-control" />
            </div>
            }