【发布时间】:2015-01-16 04:35:16
【问题描述】:
我有一个 main_table,其中有一个部门列表。
部门
HR
销售
Engg
管理员
帐户。
每个部门都有一个单独的同名表。
每个表都有字段-
emp_id
task
date_assigned
状态。
我需要创建一个查询,该查询将从每个部门中提取一条具有最新分配日期的记录并将其填充到视图中。像这样
HR 910 16-01-14 跟进候选人
【问题讨论】:
我有一个 main_table,其中有一个部门列表。
部门
HR
销售
Engg
管理员
帐户。
每个部门都有一个单独的同名表。
每个表都有字段-
emp_id
task
date_assigned
状态。
我需要创建一个查询,该查询将从每个部门中提取一条具有最新分配日期的记录并将其填充到视图中。像这样
HR 910 16-01-14 跟进候选人
【问题讨论】:
对于每个表(表) { SELECT * FROM table ORDER BY date_assigned ASC LIMIT 1; }
SQL 是唯一真正的代码,另一个是伪代码。
【讨论】:
您需要为此使用动态 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演示
【讨论】: