【问题标题】:sqlite query to add index for resultssqlite 查询为结果添加索引
【发布时间】:2014-06-01 17:34:32
【问题描述】:

我有一个包含 2 个参数的表:group_id 和名称

CREATE TABLE inf_table (group_id INTEGER NOT NULL, name TEXT NOT NULL);
INSERT INTO  inf_table(group_id, name) values (1,'AA');
INSERT INTO  inf_table(group_id, name) values (1,'BB');
INSERT INTO  inf_table(group_id, name) values (1,'AB');
INSERT INTO  inf_table(group_id, name) values (2,'AA');
INSERT INTO  inf_table(group_id, name) values (2,'BA');
INSERT INTO  inf_table(group_id, name) values (2,'AB');
INSERT INTO  inf_table(group_id, name) values (2,'BB');

我运行一个查询,按 group_id 排序结果,然后按名称排序。 " select * from inf_table order by group_id,name;" 并得到:

1|AA
1|AB
1|BB
2|AA
2|AA
2|BA
2|BB

但是,我想为每一行添加一个索引,以显示每个组内名称的索引:

1|1|AA
2|1|AB
3|1|BB
1|2|AA
2|2|AA
3|2|BA
4|2|BB

我怎么可能?

谢谢

【问题讨论】:

    标签: sqlite


    【解决方案1】:

    您必须计算同一组中的行并且名称在当前名称之前:

    SELECT (SELECT COUNT(*)
            FROM inf_table AS inf2
            WHERE inf2.group_id = inf_table.group_id
              AND inf2.name    <= inf_table.name    ) AS "index",
           group_id,
           name
    FROM inf_table
    ORDER BY group_id,
             name
    

    (在程序中读取行数时可能会更有效。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-28
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多