在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#'
,这只是一个常量字符串值,实际上不会影响排序。
对于UNION
,ORDER BY
不允许任意表达式,而只能允许结果集中的实际列名,因此无法将"MCTD#"
解释为字符串值。