Есть несколько запросов, которые пытаюсь объединить:
SELECT 'object1', MessageNo, _Order FROM _Object1Changes WHERE MessageNo=0 AND Node='33' order by _Order desc LIMIT 1
UNION ALL SELECT 'object2', MessageNo, _Order FROM _Object2Changes WHERE MessageNo=0 AND Node='33' order by _Order desc LIMIT 1
UNION ALL SELECT 'object3', MessageNo, _Order FROM _Object3Changes WHERE MessageNo=0 AND Node='33' order by _Order desc LIMIT 1
UNION ALL SELECT 'object4', MessageNo, _Order FROM _Object4Changes WHERE MessageNo=0 AND Node='33' order by _Order desc LIMIT 1;
Error Code: 1221. Incorrect usage of UNION and ORDER BY
Или пробую так:
SELECT 'object1', MessageNo, MIN(_Order) FROM _Object1Changes WHERE MessageNo=0 AND Node='33' LIMIT 1
UNION ALL SELECT 'object2', MessageNo, MIN(_Order) FROM _Object2Changes WHERE MessageNo=0 AND Node='33' LIMIT 1
UNION ALL SELECT 'object3', MessageNo, MIN(_Order) FROM _Object3Changes WHERE MessageNo=0 AND Node='33'LIMIT 1
UNION ALL SELECT 'object4', MessageNo, MIN(_Order) FROM _Object4Changes WHERE MessageNo=0 AND Node='33' LIMIT 1;
Получаю таблицу с одной записью, 'object1', null, null. Цель получить результат из нескольких таблиц, где из каждой таблицы берет запись с минимальным значением _Order и Node='33'
Как это можно исправить?
В главе документации UNION Syntax:
To apply ORDER BY or LIMIT to an individual SELECT, place the clause inside the parentheses that enclose the SELECT
Заключите отдельные подзапросы в скобки:
(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);
Продвижение своими сайтами как стратегия роста и независимости