使用seim表中的日期查询连接日期

时间:2013-07-31 02:26:44

标签: mysql sql database oracle

我在sql中有一个查询:

SELECT * FROM table

并且查询的输出是:

4     casa       perro
89    apartment  mula
12    casa       gato
31    roor       mouse
43    apartment  zorro
19    roor       sapo
        .
        .
        .

在第二列中,每个元素有2行,我有2行casa,2行有公寓,2行有roor,...

我需要一个向我展示seim元素的查询。

例如输出:

4    perro    12    gato   casa
89   mula     43    zorro  apartment
31   mouse    19    sapo   roor

1 个答案:

答案 0 :(得分:1)

假设您正在使用MySql(此标记在您的问题中排在第一位)。

你在找这样的东西吗?

SELECT col1, 
       MIN(CASE WHEN rnum = 1 THEN id   END) id1,
       MIN(CASE WHEN rnum = 1 THEN col2 END) col21,
       MIN(CASE WHEN rnum = 2 THEN id   END) id2,
       MIN(CASE WHEN rnum = 2 THEN col2 END) col22       
  FROM 
(
  SELECT t.*, @n := IF(@g = col1, @n + 1, 1) rnum, @g := col1
    FROM Table1 t, (SELECT @n := 0) i
   ORDER BY col1, id
) q
 GROUP BY col1

示例输出:

|      COL1 | ID1 | COL21 | ID2 | COL22 |
-----------------------------------------
| apartment |  43 | zorro |  89 |  mula |
|      casa |   4 | perro |  12 |  gato |
|      roor |  19 |  sapo |  31 | mouse |

这是 SQLFiddle 演示


现在,您可以采用不同的方法,将idcol2值与CONCAT()GROUP_CONCAT()一起使用不同的分隔符打包到一列中(让我们称之为{{1} }})。然后在迭代结果集时在客户端上explode

details

示例输出:

|      COL1 |          DETAILS |
--------------------------------
| apartment | 89|mula,43|zorro |
|      casa |  4|perro,12|gato |
|      roor | 31|mouse,19|sapo |

这是 SQLFiddle 演示