【问题标题】:Loop through a table list and get max values of each table in a different view/query循环遍历表列表并在不同的视图/查询中获取每个表的最大值
【发布时间】:2015-01-16 04:35:16
【问题描述】:

我有一个 main_table,其中有一个部门列表。

部门
HR
销售
Engg
管理员
帐户。

每个部门都有一个单独的同名表。
每个表都有字段-

emp_id
task
date_assigned
状态。

我需要创建一个查询,该查询将从每个部门中提取一条具有最新分配日期的记录并将其填充到视图中。像这样

HR 910  16-01-14  跟进候选人

【问题讨论】:

    标签: mysql loops


    【解决方案1】:

    对于每个表(表) { SELECT * FROM table ORDER BY date_assigned ASC LIMIT 1; }

    SQL 是唯一真正的代码,另一个是伪代码。

    【讨论】:

      【解决方案2】:

      您需要为此使用动态 SQL

      SET @sql = NULL;
      
      SELECT GROUP_CONCAT(CONCAT('(SELECT ''', depts, ''' dept, t.* FROM `', depts, 
                                 '` t ORDER BY date_assigned DESC LIMIT 1)') SEPARATOR ' UNION ALL ')
        INTO @sql
        FROM main_table;
      
      SET @sql = CONCAT(@sql, ' ORDER BY dept');
      
      PREPARE stmt FROM @sql;
      EXECUTE stmt;
      DEALLOCATE PREPARE stmt;
      

      样本输出:

      |部门 | EMP_ID |任务 | DATE_ASSIGNED | |-------|--------|-------------|------ --------------------------| |人力资源 | 910 |跟进候选人 | 2014 年 1 月 16 日 00:00:00+0000 | |销售 | 912 |跟进线索 | 2014 年 1 月 14 日 00:00:00+0000 |

      这是一个SQLFiddle演示

      【讨论】:

        猜你喜欢
        • 2016-11-28
        • 2020-04-13
        • 2019-01-25
        • 2015-01-04
        • 2020-12-02
        • 2013-06-11
        • 2021-07-20
        • 2022-08-11
        • 1970-01-01
        相关资源
        最近更新 更多