AS TMP(EMAIL
- это условие корреляции , которое является частью ссылки на таблицу
Он присваивает «псевдоним» (имя корреляции) таблице, сгенерированной оператором VALUES
, а также имя ее единственному столбцу. MySQL v8 также поддерживает этот синтаксис для таблиц, которые являются подвыборками.
Ваша ошибка во втором примере состоит в том, что вы отделили предложение корреляции от имени таблицы. Это должно выглядеть следующим образом (обратите внимание, что здесь нельзя назначать псевдонимы столбцов, поскольку table2
не является подвыбором):
select *
from table1 join
table2 as TMP using (id);
В этом примере вы можете назначить также псевдоним столбца:
select *
from table1 join
(select 'foo@bar.com') as TMP (EMAIL) using (EMAIL);