在 SQLite 中执行查询时出现以下错误:
4th ORDER BY term does not match any column in the result set
我的查询:
select * from Users where deleted != 1 AND DATE(created) <= '2013-10-09' and
DATE(created) >= '2013-09-09T12:41:55.261Z' UNION select * from Users where deleted != 1 AND
owner NOT IN(Select userid from Customer)
order by Type DESC,License ASC,NUM ASC,"MCTD#" ASC,Name DESC;
然而,与单个查询等效,即 没有 UNION 似乎有效 很好。
是否有ORDER BY条件必须在结果中的限制 放?如果是这样,为什么没有 UNION 就不能启动?
我曾经从 Users 中选择全部,所以它应该从 User 表中获取所有列。那为什么会出现这个异常呢?
最佳答案
如果您的列名称是 MCTD%23
,那么您必须完全使用该名称来引用该列。
%
转义是 HTTP 协议(protocol)的一个特性,不在 SQL 中使用。
"MCTD#"
似乎在没有 UNION
的情况下工作的原因是它实际上并不引用列。当您不使用 UNION
时,您可以在 ORDER BY
子句中使用任意表达式。如果未找到带引号的列名,则为了与 MySql 兼容,"MCTD#"
被解释为 'MCTD#'
,它只是一个常量字符串值实际上不影响排序。
使用 UNION
时,ORDER BY
不允许任意表达式,只能使用结果集中的实际列名,因此无法解释 "MCTD# "
作为字符串值。
关于android - 按不在结果集中的术语排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19267544/