Код ошибки: 1248. У каждой производной таблицы должен быть свой псевдоним. Решение для запроса не найдено.
Я получаю сообщение об ошибке при использовании этого запроса в MySQL.
Логика запроса верна, и я пробовал это в Oracle, и он работает нормально, но я получаю ошибку при запуске этого в MySQL.
Я посмотрел предыдущие вопросы о Stackru, но не нашел ничего, что могло бы мне помочь.
Вот запрос:
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
2 ответа
Решение
Вам необходимо предоставить псевдоним для подзапроса, например так:
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;
Из документации,
Подзапросы допустимы в предложении FROM оператора SELECT. Фактический синтаксис:
SELECT... FROM (подзапрос) [AS] имя...
Предложение [AS] name является обязательным, поскольку каждая таблица в предложении FROM должна иметь имя. Любые столбцы в списке выбора подзапроса должны иметь уникальные имена.
Да, вам нужно указать псевдоним для производных данных
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;