加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在sqlite中的View中添加新列?

发布时间:2020-12-12 19:00:13 所属栏目:百科 来源:网络整理
导读:我在sqlite(table1)中有这个数据库: +-----+-------+-------+| _id | name | level |+-----+-------+-------+| 1 | Mike | 3 || 2 | John | 2 || 3 | Bob | 2 || 4 | David | 1 || 5 | Tom | 2 |+-----+-------+-------+ 我想创建一个包含级别2的所有元素的
我在sqlite(table1)中有这个数据库:

+-----+-------+-------+
| _id | name  | level |
+-----+-------+-------+
| 1   | Mike  | 3     |
| 2   | John  | 2     |
| 3   | Bob   | 2     |
| 4   | David | 1     |
| 5   | Tom   | 2     |
+-----+-------+-------+

我想创建一个包含级别2的所有元素的视图,然后添加一个新列,指示新表中行的顺序.也就是说,我想要这个结果:

+-------+------+
| index | name |
+-------+------+
| 1     | John |
| 2     | Bob  |
| 3     | Tom  |
+-------+------+

我试过了:

CREATE VIEW words AS SELECT _id as index,name FROM table1;

但后来我得到:

+-------+------+
| index | name |
+-------+------+
| 2     | John |
| 3     | Bob  |
| 5     | Tom  |
+-------+------+

我想它应该是这样的:

CREATE VIEW words AS SELECT XXXX as index,name FROM table 1;

我应该使用什么而不是XXXX?

解决方法

按_id排序时,包含此行的行数与_id值小于或等于此行的_id的行数相同:

CREATE VIEW words AS
  SELECT (SELECT COUNT(*)
          FROM table1 b
          WHERE level = 2
            AND b._id <= a._id) AS "index",name
  FROM table1 a
  WHERE level = 2;

(计算本身实际上并不需要ORDER BY _id,因为当我们只计算它们时,行的顺序无关紧要.)

请注意,保证不会对单词进行排序;如果需要,添加ORDER BY“index”.

当然,这不是很有效率.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读