0

我想只选择在 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    

问候

4

3 回答 3

2

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

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

于 2013-06-21T08:46:17.587 回答
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

虽然使用起来很可怕。

于 2013-06-21T11:32:17.550 回答
0

你可以像这样选择这两列

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

演示

然后在php中将它们分开

于 2013-06-21T08:53:34.820 回答