sqlite - 如何将行号保存到 SQLite 中的表中?

标签 sqlite

我已将行号添加到表中(合并),因此:

SELECT ROW_NUMBER() OVER (ORDER BY Pclass) RowNum, *
FROM merged;

返回结果:

1|1|0|58|0|0|146.5208|0|20|0|1|1|0.53043592
2|1|0|31|1|0|113.275|0|23|0|1|1|0.671198682
3|1|0|38|0|0|227.525|0|29|0|1|1|0.888825796
4|1|0|36|0|2|71|0|23|1|0|1|0.49853335

但是,当我检查merged时,行号不再存在(请注意,这会产生无序的结果,但仍然显示了我正在表达的观点):

SELECT * FROM merged;

2|0|24|0|0|13|0|38|1|0|0|0.505845678
3|1|61|0|0|6.2375|0|25|1|0|0|0.128146005
2|0|17|0|0|12|0|21|0|1|1|0.465261004
2|1|18|0|0|11.5|0|26|1|0|0|0.458356337

我怀疑实现此目的的方法是通过添加新列然后将行号添加到该列来更新merged,但我不知道如何进行。

因此,我的问题是:如何将行号保存到合并

最佳答案

SELECT 语句不会更改merged 表。更新现有表会有点复杂,我想没有简单的方法可以做到这一点。因此,更简单的方法是创建一个新表,删除前一个表并将新表重命名为旧表。

这段代码应该可以工作:

CREATE TABLE new_merged
  AS (SELECT ROW_NUMBER() OVER (ORDER BY Pclass) RowNum, * FROM merged); 

DROP TABLE merged;

ALTER TABLE new_merged RENAME TO merged;

关于sqlite - 如何将行号保存到 SQLite 中的表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56895327/

相关文章:

java - SELECT MAX(column) 只返回列名

c# - 强制关闭xamarin android app 谁用了sqlite-net crud操作

sqlite - SGE+ sqlite3 : Error: database is locked

c# Xamarin SQLite.Net 序列化模式无法正常工作?

python - 将数据帧附加到 sqlite3 表,BLOB 而不是时间戳

android - SQLiteDatabase的插入方法

mysql - Ruby/Rails/Mysql

android - 单击按钮时将 TextView 文本插入 SQLite

sql - 使用内部SELECT查询“清理”任意SQL?

java - 如何实现 String 变量而不是 'Landschaft' ?