2017-06-16 30 views
0

美好的一天mysql SELECT WHERE只有特定列有值

我有一个十几列的表,我在寻找一个查询,它将返回只填充了特定列的行。所以它不应该返回“非法”列被填满的行。

喜欢的东西:

SELECT * FROM table WHERE col1 is NOT NULL 
AND all_other_cols is NULL; 

^我知道它可以通过列出每隔一列,并表示“不空”来完成,但有没有这样做的另一种方式?

希望这是有道理的

UPDATE:

基于答案下面我就用 “描述MY_TABLE;”然后建立一个查询,将过滤所有不需要的列'是NULL'

+0

检查所有列都是最干净的方法,可能是最优化的方面。如果你想要更简单的东西,可以看看'COALESCE'。 –

回答

2

没有直接的功能。但是你可以这是什么:

您连接所有表列一个字符串,然后测试针对的意味着是NULL列该字符串。如果所有其他列都为空或保留NULL,这两个值只能相同。

的这个问题的答案可能会帮助如何甚至简化:

MySQL concatenating all columns

+0

谢谢你,我也这么想过,所以有像CONCAT_WS这样的东西,但列名? –

+1

看看我引用的问题。 – arkascha

+0

我想我只会使用DESCRIBE my_table;然后用'不需要的col是NULL'建立一个查询,似乎是最简单的,这要感谢确认这个没有直接的功能 –

1

我觉得你的方法是最简单的一个

+2

这不是问题的答案。这应该是一个评论。 – arkascha

1

您可以使用ISNULL条件:check out here

+0

OP写道他知道这一点,但这不是他正在寻找的...... – arkascha

+0

没错,但我给出的链接是关于如果他决定使用它,优化isnull。我应该用另一种方式写我的答案 –