【发布时间】:2015-12-08 21:41:34
【问题描述】:
我需要找到创建/更新日期为空的任何表中的所有行
有超过 500 个表,因此执行以下操作是不可行的。
SELECT *
FROM
(SELECT
'tableA' AS `table`,
IF(COUNT(`column_a`), NULL, 'column_a') AS `column`
FROM tableA
UNION ALL
SELECT
'tableB' AS `table`,
IF(COUNT(`column_b`), NULL, 'column_b') AS `column`
FROM tableB
UNION ALL
-- etc.
) t
WHERE
`column` IS NOT NULL
我想我可以以某种方式使用INFORMATION_SCHEMA,但我遇到了困难。
【问题讨论】:
-
所以你有一堆表,它们都有 Create_Date 和 Update_Date 作为列?那么你需要每个表中每一行的所有信息,其中任一日期为 NULL?
-
这被标记为 sql-server 但代码看起来很像 mysql。
-
INFORMATION_SCHEMA(或sys.tables、sys.columns等目录视图)为您提供有关数据库(静态)结构的信息 - 表名、列名称等 - 但不关于内容(值 -NULL或不) -
是的,您可以使用
INFORMATION_SCHEMA作为实现您需要的步骤。编写一个存储过程,在其中对每个表执行查询或构建一个查询。 -
SQL Server 有一个 sp_MSforeachtable 函数可以很好地解决这个问题。 social.technet.microsoft.com/wiki/contents/articles/16977.aspx
标签: sql sql-server information-schema