错误代码:1248。每个派生表都必须有自己的别名 没有找到查询的解决方案

Posted

技术标签:

【中文标题】错误代码:1248。每个派生表都必须有自己的别名 没有找到查询的解决方案【英文标题】:Error Code: 1248. Every derived table must have its own alias No solution found for query 【发布时间】:2015-02-21 12:24:00 【问题描述】:

mysql 中使用此查询时出现错误。

查询逻辑是正确的,我已经在 Oracle 中尝试过,并且运行良好,但是在 MySQL 中运行时出现错误。

我在 *** 上查看了以前的问题,但没有找到可以帮助我的东西。

这是查询:

select * from
  (select PM.ID, PM.Name, PM.TIMEOUT, PMS.PROCESS_MONITOR_ID, PMS.PROCESS_START_DATE
    from RATOR_IMP.PROCESS_MONITOR as PM
    JOIN RATOR_IMP.PROCESS_MONITOR_STATISTIC as PMS
    ON PM.ID = PMS.PROCESS_MONITOR_ID
    WHERE PM.ENABLED=1 and (PM.NAME='SDRRATINGENGINE11' or PM.NAME='WORKFLOWENGINE1')
    order by PMS.PROCESS_START_DATE desc)
limit 10000;

这是错误:

Error Code: 1248. Every derived table must have its own alias 
No soultion found for query

【问题讨论】:

见***.com/questions/1888779/… 【参考方案1】:

您需要为子查询提供别名,如下所示:

select * from
(select PM.ID, PM.Name, PM.TIMEOUT, PMS.PROCESS_MONITOR_ID, PMS.PROCESS_START_DATE
 from RATOR_IMP.PROCESS_MONITOR as PM
 JOIN RATOR_IMP.PROCESS_MONITOR_STATISTIC as PMS
 ON PM.ID = PMS.PROCESS_MONITOR_ID
 WHERE PM.ENABLED=1 and (PM.NAME='SDRRATINGENGINE11' or PM.NAME='WORKFLOWENGINE1')
 order by PMS.PROCESS_START_DATE desc) as s
limit 10000;

来自documentation,

子查询在 SELECT 语句的 FROM 子句中是合法的。实际语法是:

SELECT ... FROM(子查询)[AS] 名称 ...

[AS] name 子句是强制性的,因为 FROM 子句中的每个表都必须有一个名称。子查询选择列表中的任何列都必须具有唯一的名称。

【讨论】:

谢谢 :) 它现在正在运行。只需一个小查询即可询问与此问题无关的问题。我想使用插入语句并将从此查询返回的数据存储到新表中。但是不知道如何使用上面的 select 语句使用 insert。请帮帮我【参考方案2】:

是的,您需要为派生数据指定别名

select x.* from
(select PM.ID, PM.Name, PM.TIMEOUT, PMS.PROCESS_MONITOR_ID, PMS.PROCESS_START_DATE
from RATOR_IMP.PROCESS_MONITOR as PM
JOIN RATOR_IMP.PROCESS_MONITOR_STATISTIC as PMS
ON PM.ID = PMS.PROCESS_MONITOR_ID
WHERE PM.ENABLED=1 and (PM.NAME='SDRRATINGENGINE11' or PM.NAME='WORKFLOWENGINE1')
order by PMS.PROCESS_START_DATE desc)x <-- here 
limit 10000; 

【讨论】:

以上是关于错误代码:1248。每个派生表都必须有自己的别名 没有找到查询的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中的“每个派生表都必须有自己的别名”是啥错误?

MySQL中的“每个派生表都必须有自己的别名”是啥错误?

MySQL中的“每个派生表都必须有自己的别名”是啥错误?

MySql + 实体框架 = 每个派生表都必须有自己的别名

MySQL UNION - 每个派生表都必须有自己的别名

mysql语法错误:Every derived table must have its own alias