Sqlite INSERT INTO ...使用ORDER BY进行SELECT

时间:2018-05-02 15:29:30

标签: sqlite

我有一张表格如下:

CREATE TABLE IF NOT EXISTS TRACE_TABLE ([TRACE_NUM] INTEGER NOT NULL PRIMARY KEY [TRACE_ID] INTEGER NOT NULL [TRACE_TIME_DELTA] TEXT NOT NULL [TRACE_TIME_HEX] INTEGER NOT NULL [TRACE_TIME_AHB] INTEGER NOT NULL [TRACE_PARAM_TEXT] TEXT NOT NULL [TRACE_PARAM_TEXT_DECODED] TEXT);

现在我想使用列对此表进行排序。要做到这一点,我做了以下:

  1. 如果不存在,请使用上述语句创建新表 TRACE_TABLE_TEMP
  2. 然后删除先前操作的所有行(如果存在)
  3. 然后将所有行从 TRACE_TABLE 复制到 TRACE_TABLE_TEMP ,但使用列以排序顺序复制。
  4. 我尝试在Sqlite DB浏览器中执行该语句,但我没有得到预期的结果。请参阅下文, TRACE_NUM 未按DESC 排序。

    enter image description here

    如何按排序顺序将表复制到另一个表?

1 个答案:

答案 0 :(得分:0)

documentation说:

  

如果返回多行的SELECT语句没有ORDER BY子句,则返回行的顺序是未定义的。

因此,更改存储行的顺序没有多大意义,因为您必须在稍后用于读取数据的查询上放置相同的ORDER BY。

无论如何,错误是'TRACE_NUM'是一个常量字符串。要引用该列的内容,请使用TRACE_NUM