mysql - 联合语句仅给出引用一列的错误

标签 mysql sql union

我正在使用一个名为 Task 的表和一个 sql 联合查询来检索一些任务。所有信息都可以在这里找到:

http://sqlfiddle.com/#!2/786e1/2

我的问题是这样的:

当我在 order by 子句中使用任何列(优先级、start_date、completion_date...)时,它工作得很好,但是每当我将created_on放在上面时,它都会出现以下错误:

Unknown column 'created_on' in 'order clause'

此外,在尝试 t.created_on 时,我一直遇到相同的错误:

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

在我提供的 fiddle 中,您可以看到任务表的结构和我尝试运行的查询。我想知道为什么联合体不与created_on列一起工作以及如何使其工作。

提前致谢。

最佳答案

您需要将 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

关于mysql - 联合语句仅给出引用一列的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25273448/

相关文章:

php - 如何为多个表单创建提交按钮

mysql - 改进对多个表进行计数和连接的查询

mysql - 使用 DENSE_RANK() MySQL 缺少右括号

java - informix中如何避免锁异常

python - 在mysql中添加列移动平均线

sql - Oracle SQL : Simplifying my seemingly-horrendous subquery collection

sql - 将 MAX 与多个表一起使用

java - SQL 中的日期选择错误

MySQL:为什么我需要一个带有 "WHERE id NOT IN(subquery1 UNION subquery 2)"的额外 SELECT

sql - 使用 count 函数合并多个查询