Cómo obtener el nombre de columna cuyo valor no es nulo en mysql

Tengo una mesa que tiene una sola entrada. Tengo que obtener esos valores de columna cuyos valores no son nulos. Por favor sugiérame consultar MySQL para que pueda implementar esto. Mi mesa es:

enter image description here

En esta tabla, 3 columnas tienen valores nulos. Así que no quiero estas columnas, la consulta debe devolver valores que no sean nulos.

¿Puedo obtener el nombre de la columna también? Me gustaría obtener el nombre de la columna, es decir min_p5 cuyo valor no es nulo. Así que puedo dividir el nombre de la columna en cadenas y usar 5 en mi cálculo. Por favor sugiérame respuesta.

Creo que esto es lo que necesitas:

Suponiendo que el nombre de su tabla sea “pedidos” [los pls lo cambian en consecuencia]

 $q="show columns from orders"; $res=mysql_query($q) or die(mysql_error()); $arr_field=array(); while($row=mysql_fetch_object($res)){ $field=$row->Field; $q1="select ".$field." from orders where ".$field."!=0"; //if string then '0' $res1=mysql_query($q1) or die(mysql_error()); if(mysql_num_rows($res1)>0){ $arr_field[]=$field; } } $q="select "; foreach($arr_field as $field){ $q.=$field.","; } $q=rtrim($q,","); $q.=" from orders"; $res=mysql_query($q) or die(mysql_error()); while($row=mysql_fetch_object($res)){ foreach($arr_field as $field){ print($field."==".$row->$field."
"); } }

Ejecuta esto y espero que te hagas una idea …

 SELECT * FROM table WHERE YourColumn IS NOT NULL; 

Fuente: MySQL SELECT solo valores no nulos

 select * from table where column_name is not null 

Intente seguir la consulta para resolver su problema,

 select * from table where column_name IS NOT NULL 

Parece que quieres regresar:

 | POINT_ID | BUS_ID | MIN_P5 | MIN_P15 | |----------|--------|--------|---------| | P101 | B101 | 1000 | 3000 | 

porque quiere excluir columnas que tienen un valor cero. No es demasiado fácil hacerlo en MySQL porque necesita usar declaraciones preparadas:

 SELECT CONCAT( 'SELECT CONCAT(\'SELECT \', CONCAT_WS(\',\',', GROUP_CONCAT( CONCAT( 'CASE WHEN EXISTS(SELECT * FROM TABLENAME WHERE ', `column_name`, '!=\'0\') THEN \'', `column_name`, '\' END') ), '),\' FROM tablename\') FROM tablename INTO @final_sql' ) FROM `information_schema`.`columns` WHERE `table_schema`=DATABASE() AND `table_name`='tablename' INTO @sql; PREPARE stmt FROM @sql; EXECUTE stmt; PREPARE finalstmt FROM @final_sql; EXECUTE finalstmt; 

Por favor, mira el violín aquí . Si sus columnas son números y no cadenas, tal vez se necesiten algunas correcciones menores. Sin embargo, le sugiero que pruebe un enfoque diferente o que se replantee la estructura de su tabla.