mysql 查询 所有的 非空记录字段
CREATE DEFINER=`root`@`%` PROCEDURE `find_actual_non_null_columns`(IN db_name VARCHAR(255))
BEGINDECLARE done INT DEFAULT FALSE;DECLARE tab_name VARCHAR(255);DECLARE col_name VARCHAR(255);DECLARE cur CURSOR FOR SELECT TABLE_NAME, COLUMN_NAMEFROM 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: LOOPFETCH cur INTO tab_name, col_name;IF done THENLEAVE read_loop;END IF;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;IF @non_null_count > 0 THENINSERT 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_nameFROM temp_non_null_columnsORDER BY table_name, column_name;END
调用
CALL find_actual_non_null_columns('schy');