联合语句仅提供引用一列的错误

时间:2014-08-12 20:23:39

标签: mysql sql union

我正在使用一个名为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'

此外,在尝试tcreated_on时,我仍然遇到同样的错误:

Unknown column 't.created_on' in 'order clause'

在我提供的小提琴中,您可以看到Task表的结构和我正在尝试运行的查询。我想知道为什么联合没有使用created_on列以及如何使它工作。

提前致谢。

2 个答案:

答案 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。*使它成功。

感谢所有帮助过我的人,如果遇到同样的问题,我会考虑回复