如何从数据库中仅选择表的非空列

时间:2013-09-09 05:12:29

标签: mysql asp.net

我的数据库中有一个包含46列的表,在这46列中,25或26大多是空的。 当我按某种条件选择所有列时,我只想选择哪些列中有哪些数据

1 个答案:

答案 0 :(得分:0)

您可以尝试此查询以显示非空列的名称:

SET group_concat_max_len = 4294967295;

SELECT GROUP_CONCAT(CONCAT(
' SELECT ',QUOTE(COLUMN_NAME),
' FROM   table_name',
' WHERE `',REPLACE(COLUMN_NAME, '`', '``'),'` IS NOT NULL',
' HAVING COUNT(*)'
) SEPARATOR ' UNION ALL ')
INTO   @sql
FROM   INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'table_name';

PREPARE stmt FROM @sql;
EXECUTE stmt; 

SQL Fiddle

然后只需手动执行这些列:

 SELECT column_name3, column_name8 FROM Table_Name;

SQL Fiddle