Mysql select only列只有数据

时间:2013-06-21 08:40:15

标签: mysql stored-procedures

我想只选择只有mysql数据的列。

在示例中,我将table1作为以下内容:

Table1

NAME VAL1 VAL2 VAL3 VAL4
A   1     2
B   2     3
C   3     3    

从Table1中选择名称,val1,val2,val3,val4;

如何在mysql中只选择Name,val1,val2?

Result:

    Table1

    NAME VAL1 VAL2 
    A    1     2
    B    2     3
    C    3     3    

此致

3 个答案:

答案 0 :(得分:2)

您必须处理null值,而您想要实现的目标是不可能的。因为在执行语句之前无法预测有多少列不会NULL

PHP或其他语言有许多简单的方法,可以根据您的需要整理结果。

答案 1 :(得分:0)

你可以选择那两个列

   SELECT name, CONCAT_WS(',',VAL1,val2,val3,val4) as vals FROM `table1` 

demo

然后在php中分隔它们

答案 2 :(得分:0)

实际上不可能,因为您希望在MySQL未设置的每一行上返回不同数量的列。因此,这是一个演示问题。

除此之外,您可以返回分组为单个记录的所有非空字段。

SELECT NAME, GROUP_CONCAT(CONCAT_WS(' - ', 
IF(VAL1 IS NULL, NULL, CONCAT('VAL1=', VAL1)), 
IF(VAL2 IS NULL, NULL, CONCAT('VAL2=', VAL2)), 
IF(VAL3 IS NULL, NULL, CONCAT('VAL3=', VAL3)), 
IF(VAL4 IS NULL, NULL, CONCAT('VAL4=', VAL4))))
FROM Table1

虽然使用起来相当可怕。