我尝试使用SQL语句
SELECT * FROM table ORDER BY column
通过PHP中的PDO-Object。问题是,我总是得到一个错误(在非对象上调用成员函数fetchall() - 这意味着,当使用所有列名EXCEPT的ID作为ID时,查询没有返回PDO对象)。当我查询
SELECT * FROM table ORDER BY ID
它有效。 ID是PRIMARY INTEGER KEY,所有其他列都是TEXT或NUMERIC,它们都不适用于ORDER BY子句。
有什么想法吗?
答案 0 :(得分:0)
可能是临时文件的问题,正如您在对Frank Heikens的回答中所建议的那样。
http://www.sqlite.org/tempfiles.html说:
2.6瞬态指数
SQLite可以利用瞬态索引来实现SQL语言功能,例如:
* ORDER BY或GROUP BY子句
*聚合查询中的DISTINCT关键字
*由UNION,EXCEPT或INTERSECT连接的复合SELECT语句
每个瞬态索引都存储在自己的临时文件中。
创建文件的位置和位置由SQLITE_TEMP_STORE
,PRAGMA temp_store
和PRAGMA temp_store_directory
控制,请参阅http://www.sqlite.org/pragma.html
答案 1 :(得分:0)
将ORDER BY
声明替换为
ORDER BY CAST(COLUMN AS REAL)
。
它可以对REAL
值进行排序。