在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就不加入?

我曾经从“用户”中选择所有内容,因此应该从“用户”表中获取所有列。那为什么要例外呢?

最佳答案

如果列的名称为MCTD%23,则必须使用该名称精确地引用该列。
%转义是HTTP协议的功能,在SQL中未使用。

"MCTD#"似乎在没有UNION的情况下可以工作的原因是它实际上并未引用列。不使用UNION时,可以在ORDER BY子句中使用任意表达式。如果找不到带引号的列名,则为了与MySql兼容,将"MCTD#"解释为'MCTD#',这只是一个常量字符串值,实际上不会影响排序。

对于UNIONORDER BY不允许任意表达式,而只能允许结果集中的实际列名,因此无法将"MCTD#"解释为字符串值。

07-27 17:30