1

我有这个结构:

表1    表 2
id_t1 id_t2
id_t2

现在,我需要在单个查询中通过 id_t2 枚举 table2 中的行。

输出示例:

枚举 id_t1 id_t2
1 1 1
2 2 1
3 3 1
1 4 2
2 5 2
4 6 1

导致使用每个 id_t2 的独占索引枚举的行。

我知道我必须使用变量(如@ennum)并且我已经能够在全局范围内枚举它们,但我还没有找到正确的方法来做到这一点。

提前致谢。

4

2 回答 2

0

试试这个,

SELECT  g.ennum, 
        g.id_t1,
        g.id_t2
FROM 
    (
        SELECT  t.id_t1,
                t.id_t2,
                @running1:=if(@previous1=concat(t.id_t2),@running1,0) + 1 as ennum  ,
                @previous1:=concat(t.id_t2) 
        FROM TableName t
     )  g
ORDER BY ID_T2, ennum
于 2013-02-20T09:46:28.810 回答
0

好的,感谢@JW。我想我明白了:

为此在 phpmyadmin 中工作:

  1. 之前需要将变量running1previous1设置为 0。
  2. 嵌套查询必须按idt2排序,就好像它不会正确更新正在运行的索引一样。

结果是:

SET @running1:=0;
SET @previous1:=0;
SELECT  g.ennum, 
    g.id_t1,
    g.id_t2
FROM 
    (
        SELECT  t.id_t1,
                t.id_t2,
                @running1:=if(@previous1=concat(t.id_t2),@running1,0) + 1 as ennum  ,
                @previous1:=concat(t.id_t2) 
        FROM TableName t
        ORDER BY id_t2
    ) AS g
ORDER BY id_t2, ennum
于 2013-02-20T20:01:16.093 回答