错误代码: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。每个派生表都必须有自己的别名 没有找到查询的解决方案的主要内容,如果未能解决你的问题,请参考以下文章