如何在mysql中获取其值不为null的列名

时间:2014-02-13 07:08:37

标签: php mysql phpmyadmin

我有一个只有一个条目的表。我必须获取其值不为null的列值。请建议我查询MySQL,以便我可以实现这一点。我的表是:

enter image description here

在此表中, 3 列具有Null值。所以我不想要这些列,查询应该返回非空的值。

我也可以获得列名吗?就像我想得到列的名称,即 min_p5 ,其值不为空。因此,我可以将列名称拆分为字符串,并在计算中使用 5 。请建议我回答。

5 个答案:

答案 0 :(得分:2)

SELECT * 
FROM table 
WHERE YourColumn IS NOT NULL;

来源:MySQL SELECT only not null values

答案 1 :(得分:2)

select *  from table where column_name is not null

答案 2 :(得分:2)

我认为这就是你所需要的:

假设您的表名为“订单”[请相应更改]

$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."<br/>");
    }
}

运行这个,我希望你能得到一个想法......

答案 3 :(得分:1)

尝试以下查询来解决您的问题,

select * from table
where column_name IS NOT NULL

答案 4 :(得分:0)

好像你想回来:

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

因为您要排除值为零的列。在MySQL中执行此操作并不容易,因为您需要使用预准备语句:

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;

请参阅小提琴here。如果您的列是数字而不是字符串,则可能需要一些小修复。但是,我建议您尝试不同的方法或重新考虑您的表结构。