循环遍历表列表,并在不同的视图/查询中获取每个表的最大值

时间:2015-01-16 04:35:16

标签: mysql loops

我有一个main_table,它有一个depts列表,如。

科指南
HR
销售
工程证书
管理员
帐户。

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

EMP_ID
任务
date_assigned
状态。

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

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

2 个答案:

答案 0 :(得分:0)

表格(表格) {    SELECT * FROM表ORDER BY date_assigned ASC LIMIT 1; }

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

答案 1 :(得分:0)

您需要为此

使用动态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;

示例输出:

|  DEPT | EMP_ID |                    TASK |                  DATE_ASSIGNED |
|-------|--------|-------------------------|--------------------------------|
|    HR |    910 | Follow Up on Candidates | January, 16 2014 00:00:00+0000 |
| Sales |    912 |      Follow up on leads | January, 14 2014 00:00:00+0000 |

这是 SQLFiddle 演示