mysql - MySQL 跨多列计数,带有子查询,带有一个结果查询
问题描述
我有一个包含字段(task1、task2、..pts、user、date)的表(kt2020)。同一个任务可以出现在多个列中。要按任务计数,我有子查询:
SELECT
task,
count(*)
FROM (SELECT task1 AS task FROM kt2020 UNION ALL
SELECT task2 AS task FROM kt2020 UNION ALL
SELECT task3 AS task FROM kt2020 UNION ALL
SELECT task4 AS task FROM kt2020 UNION ALL
SELECT task5 AS task FROM kt2020 UNION ALL
SELECT task6 AS task FROM kt2020 UNION ALL
SELECT task7 AS task FROM kt2020
) t
group by task
我现在想要的是创建一个外部查询,进一步按用户和日期过滤;像这样的smtg:
WHERE STR_TO_DATE(date, '%Y-%m-%d') >= CURDATE() - INTERVAL 7 DAY and user = 'username'
这会给我过去 7 天的任务结果,来自用户“用户名”。现在,这些外部字段对当前查询是隐藏的,我不知道如何在同一个查询中访问“日期”或“用户”。
我想我可以敲出一些又长又麻烦的东西,但我敢肯定有一种方法可以使用我不知道的常用功能?
解决方案
一种选择是返回子查询date
,user
然后使用WHERE
子句进行过滤:
SELECT
task,
count(*)
FROM (SELECT task1 AS task, date, user FROM kt2020 UNION ALL
SELECT task2 AS task, date, user FROM kt2020 UNION ALL
SELECT task3 AS task, date, user FROM kt2020 UNION ALL
SELECT task4 AS task, date, user FROM kt2020 UNION ALL
SELECT task5 AS task, date, user FROM kt2020 UNION ALL
SELECT task6 AS task, date, user FROM kt2020 UNION ALL
SELECT task7 AS task, date, user FROM kt2020
) t
WHERE STR_TO_DATE(date, '%Y-%m-%d') >= CURDATE() - INTERVAL 7 DAY and user = 'username'
group by task
推荐阅读
- python - 如何从numpy数组中的所有元素中删除一个值
- python - 正则表达式匹配没有特定后缀的数字
- chatbase - 如何在 BLiP 中发送 Chatbase Intent
- python - 检查列表是否包含另一个列表中的项目
- r - 当我想在RSelenium中获得“没有html标签”时如何返回
- java - 如何在 JTable 中选择行或列?
- javascript - 我正在尝试将数据从单元格范围发送到不和谐的聊天频道
- javascript - 为什么我的 JS 类之间出现引用错误?
- php - How to search for multiple values in a text file via text boxes and radio buttons?
- javascript - How to show a comment box into your web page using html and javascript?