Нет, ответ нет. Подзапрос NewAlias
должен быть повторен.
Можно было бы с КТР (Common табличных выражений), но MySQL не выполнил их:
WITH newAlias AS
(SELECT x,y FROM A UNION SELECT x,y FROM B UNION SELECT x,y FROM C)
SELECT x
FROM newAlias
WHERE y = (SELECT MAX(y) FROM newAlias) ;
В MySQL, вы должны повторить подзапрос:
SELECT x
FROM
(SELECT x,y FROM A UNION SELECT x,y FROM B UNION SELECT x,y FROM C)
AS newAlias
WHERE y =
(SELECT MAX(y)
FROM
(SELECT x,y FROM A UNION SELECT x,y FROM B UNION SELECT x,y FROM C)
AS newAlias
) ;
Конечно, вы обычно может переписывать-переформулировать запрос. Один из способов сделать это:
SELECT x
FROM
(SELECT x,y FROM A UNION SELECT x,y FROM B UNION SELECT x,y FROM C)
AS newAlias
WHERE y = GREATEST((SELECT MAX(y) FROM A)
, (SELECT MAX(y) FROM B)
, (SELECT MAX(y) FROM C)
) ;
Я 99% уверен, что ответ да, но в любом случае, вы можете легко проверить эти вещи для себя с помощью SQL скрипку: http://sqlfiddle.com/ –
Нет, ответ - нет. Подзапрос 'NewAlias' должен быть повторен. –