我正在使用一个名为Task的表和一个sql union查询来检索某些任务。所有信息都可以在这里找到:
http://sqlfiddle.com/#!2/786e1/2
我的问题是:
当我在order by子句中使用任何列时,(priority,start_date,completion_date ...)它完美地工作,但每当我把created_on放到它时它会给我以下错误:
Unknown column 'created_on' in 'order clause'
此外,在尝试t
。created_on
时,我仍然遇到同样的错误:
Unknown column 't.created_on' in 'order clause'
在我提供的小提琴中,您可以看到Task表的结构和我正在尝试运行的查询。我想知道为什么联合没有使用created_on列以及如何使它工作。
提前致谢。
答案 0 :(得分:0)
您需要将SELECT语句放在子查询中。 你必须尝试这样的事情, 在sqlfiddle中没有用户表,所以我更改了原始查询。 请参阅下面的示例,尝试与原始查询相同的方法。 对不起,我不会说英语,希望我能帮助你
SELECT * FROM
(
SELECT t.id,
t.title,
t.owner,
t.created_on,
t.due_date,
t.completion_date,
t.start_date,
t.predecessor_id,
t.priority,
t.status,
t.performer_id,
t.delegate_id,
t.performer_type,
t.is_assigned,
t.review_required,
t.attachments
FROM task t
WHERE t.performer_id IS NULL
AND t.is_returned = 0
AND t.status = 'active'
union ALL
SELECT t.id,
t.title,
t.owner,
t.created_on,
t.due_date,
t.completion_date,
t.start_date,
t.predecessor_id,
t.priority,
t.status,
t.performer_id,
t.delegate_id,
t.performer_type,
t.is_assigned,
t.review_required,
t.attachments
FROM task t
WHERE t.performer_id IS NULL
AND t.is_returned = 0
AND t.status = 'active'
) as x
order by title
答案 1 :(得分:0)
我不知道为什么,但是将句子从列改为t。*使它成功。
感谢所有帮助过我的人,如果遇到同样的问题,我会考虑回复