如何从MySQL中的特殊表结构查询信息?

时间:2011-11-09 15:04:36

标签: mysql

我在MySQL中遇到了查询或表的问题,我花了很多时间来解决它,但我仍然没有答案。所以我需要你的帮助。

表的格式是那样的

-------------------------------------------------------------
col1   |   col2   |   col3   |   col4  |  col5   |   col6   |
-------------------------------------------------------------
   a   |     b    |    c     | null    |   null  |   null   |
-------------------------------------------------------------
 null  |   null   |   null   |   1     |    2    |    3     |
-------------------------------------------------------------
  null |   null   |   null   |   4     |    5    |    6     |
-------------------------------------------------------------
  null |   null   |   null   |   7     |    8    |    9     |
-------------------------------------------------------------
  d    |    e     |    f     |   null  |   null  |   null   |
-------------------------------------------------------------
  null |   null   |   null   |   10    |   11    |    12    |
-------------------------------------------------------------
  null |   null   |   null   |   13    |   14    |    15    |
-------------------------------------------------------------
  null |   null   |   null   |   16    |   17    |    18    |
-------------------------------------------------------------
...

该表具有类似的结构,因为它从大型csv文件(大约300k行)加载数据。我想要的只是编写一个mysql语句,以最快的速度查询记录,结果是格式:

(A,B,C,1,2,3),(A,B,C,4,5,6),(A,B,C,7,8,9),(d,E, f,10,11,12),(d,e,f,13,14,15),(d,e,f,16,17,18)......

但是......怎么样?请帮我解决问题。 事先提出

1 个答案:

答案 0 :(得分:2)

看起来很丑,但很有效。

SELECT * FROM (
SELECT
    IF(col1 IS NULL,@c1,@c1:=col1) AS col1, 
    IF(col2 IS NULL,@c2,@c2:=col2) AS col2, 
    IF(col3 IS NULL,@c3,@c3:=col3) AS col3, 
    col4, col5, col6
FROM
    [table name],
    ( SELECT @c1:=0, @c2:=0, @c3:=0 ) x 
) y WHERE col4 IS NOT NULL;