从所有数据库的所有表中获取具有“date / datetime”数据类型的列的最大值

时间:2014-01-13 13:14:42

标签: mysql sql database database-schema information-schema

考虑这一点 - 有许多数据库,每个数据库都有许多表。我使用'date / datetime'数据类型以及表名和模式名称提取了列。

 SELECT
    c.column_name AS col,
    column_type AS type,
    c.table_name AS tn,
    c.table_schema AS ts
FROM
    information_schema.columns AS c,
    (SELECT
        table_name, table_schema, table_rows AS tr
    FROM
        information_schema.TABLES
    ORDER BY table_schema) a
WHERE
    column_type LIKE 'date%'
        AND a.table_name = c.table_name
        AND a.table_schema = c.table_schema
;

我得到了这些列=(column,column_type,table_name,table_Schema)。现在我想在结果中循环(或者任何其他方式都可以)并且对于每行我想要这样做

SELECT max(column) FROM table_schema.table_name 

例如,第一行是(login_date,date,login,customers),我想做

SELECT max(login_date) FROM customers.login 

我想为每一行做这件事。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

 cursor csr 
    is select max(dates)
    from tables
    and dates is not null; rec csr%rowtype;

    begin 
    open csr; 
    for x in cursor_body 
    loop
    fetch csr into rec;
    exit when csr%notfound;
    x.csr;
    end loop;
    close csr;

如果你不想创建一个完整的过程,那么你将不得不至少使用一个声明块。选择光标中的值,然后在开始后将光标循环到处理阶段。

希望这有帮助