查询 mysql中 所有的 非空记录字段

mysql 查询 所有的 非空记录字段

sql 复制代码
CREATE DEFINER=`root`@`%` PROCEDURE `find_actual_non_null_columns`(IN db_name VARCHAR(255))
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE tab_name VARCHAR(255);
    DECLARE col_name VARCHAR(255);
    DECLARE cur CURSOR FOR 
        SELECT TABLE_NAME, COLUMN_NAME
        FROM INFORMATION_SCHEMA.COLUMNS 
        WHERE TABLE_SCHEMA = db_name;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    DROP TEMPORARY TABLE IF EXISTS temp_non_null_columns;
    CREATE TEMPORARY TABLE temp_non_null_columns (
        table_name VARCHAR(255),
        column_name VARCHAR(255)
    );

    OPEN cur;

    read_loop: LOOP
        FETCH cur INTO tab_name, col_name;
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- 检查该字段是否有非空记录(非全是null)
        SET @query = CONCAT(
            'SELECT COUNT(*) INTO @non_null_count FROM `', db_name, '`.`', tab_name, '` WHERE `', col_name, '` IS NOT NULL AND `', col_name, '` != '''''
        );

        PREPARE stmt FROM @query;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

        -- 如果有非空记录,说明该字段非全是null
        IF @non_null_count > 0 THEN
            INSERT INTO temp_non_null_columns VALUES (tab_name, col_name);
        END IF;
    END LOOP;

    CLOSE cur;

    SELECT 
        table_name AS table_name,
        column_name AS column_name
    FROM temp_non_null_columns
    ORDER BY table_name, column_name;

END

调用

sql 复制代码
CALL find_actual_non_null_columns('schy');
相关推荐
yexuhgu几秒前
Redis怎样节省海量状态存储内存_利用Bitmap结构替代传统String存储
jvm·数据库·python
chushiyunen几秒前
postgresql时序数据库插件timescaledb语法
数据库·postgresql·时序数据库
hughnz1 分钟前
下一代地热能的技术障碍
java·大数据·数据库
小李云雾2 分钟前
慧校坊-二手校园交易平台-------项目总结
数据库·后端·程序人生·fastapi·项目
2301_779622415 分钟前
如何修复SQL嵌套查询死锁_调整锁粒度与执行顺序
jvm·数据库·python
HelloWorld工程师6 分钟前
Redis 小小知识点
数据库·redis·缓存
iAm_Ike6 分钟前
HTML怎么显示灵感便签关联项目_HTML拖拽绑定项目入口【详解】
jvm·数据库·python
2301_809204709 分钟前
SQL如何实现实时数据的滑动窗口分析_SQL性能调优
jvm·数据库·python
木子墨51610 分钟前
工程算法实战 | 数据库ORDER BY的底层:内存排序 → 外部归并 → 索引优化
数据结构·数据库·python·sql·算法·动态规划
yexuhgu11 分钟前
如何在 JavaScript 循环中动态构建 HTML 字符串
jvm·数据库·python