web-dev-qa-db-ja.com

エラーコード:1248。すべての派生テーブルには独自のエイリアスが必要ですクエリのソリューションが見つかりません

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;

そしてここにエラーがあります:

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

次のように、サブクエリのエイリアスを指定する必要があります。

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;

ドキュメント から、

SELECTステートメントのFROM句では、サブクエリは有効です。実際の構文は次のとおりです。

SELECT ... FROM(subquery)[AS] name.。

FROM句のすべてのテーブルには名前が必要であるため、[AS] name句は必須です。サブクエリ選択リストの列には、一意の名前を付ける必要があります。

12
shree.pat18

はい、派生データのエイリアスを指定する必要があります

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; 
0