mysql sumif来自另一个表,而不更改值的顺序

sulc1iza  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(307)

我希望任何人都能帮助我完成这项任务,所以我在mysql数据库中有两个表:

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 |
+-------+-------+

这就是为什么我需要表1,只是为了名字的顺序。
有人能帮我吗?
致以最诚挚的问候!

6tdlim6h

6tdlim6h1#

如果这些只是元素,您可以简单地使用:
https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_find-成套

ORDER BY FIND_IN_SET(name, 'b,c,a,d,e');

也可以使用:
字段(str、str1、str2、str3,…)

ORDER BY FIND_IN_SET(name, 'b','c','a','d','e');

相关问题