获取具有最高行长度的数据MYSQL

时间:2014-11-19 01:16:06

标签: mysql sql r select

我试图从MYSQL表中选择前20行(我对MYSQL很新,我甚至不确定它是否可以称为表)。我还有一些条件,我可以通过内部连接来满足,而不是之间等等。经过所有处理后,我有一个如下表格

name,h1,h2,h3
a   , 2, 4, 5
b   ,  ,54, 5
c   ,65, 7, 8
d   , 6,  , 3
e   , 7,  ,
f   ,-1, 3,-5

' ,,'表示该组合没有数据。我更喜欢像NA' NA'那里 最重要的是,我想选择最长的前20行。我的意思是

name,length

a,3
b,2
c,3
d,2
e,1
f,3

我不需要上表,但根据长度,我需要前20行。我可以使用R来做,但表格非常庞大,我想在MYSQL中处理它,然后将表格导出到我的计算机上。任何帮助将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

如果你想要没有值的列的NA,你可以使用IFNULL(col,'NA')

select name , h1,h2,h3 
from table 
order by   LENGTH(CONCAT(h1,h2,h3))  desc
limit 20 

答案 1 :(得分:0)

如果我正确理解“长度”,则表示非NUL值的数量。如果是这样,您可以将其计算为:

select t.*
from table t
order by (h1 is not null) + (h2 is not null) + (h3 is not null) desc
limit 20;

MySQL处理布尔表达式整数,其中true为1,false为0.因此,order by中的表达式计算非NULL值的数量。然后它按降序对结果进行排序,并选择具有最多非NULL值的20行。