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

6 mysql sql alias derived-table

我在MySQL中使用此查询时出错.

查询逻辑是正确的,我已经在Oracle中尝试了它并且运行正常,但是在MySQL中运行时遇到错误.

我查看了之前关于StackOverflow的问题,但没有找到帮助我的东西.

这是查询:

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;
Run Code Online (Sandbox Code Playgroud)

这是错误:

Error Code: 1248. Every derived table must have its own alias 
No soultion found for query
Run Code Online (Sandbox Code Playgroud)

shr*_*t18 12

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

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;
Run Code Online (Sandbox Code Playgroud)

文档中,

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

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

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