Какая польза от Tmp (email) в этом запросе SQL? - PullRequest
0 голосов
/ 15 апреля 2019

Я использую Db2, сегодня я выполнил этот запрос.

MERGE INTO table1 AS A 
    USING (VALUES('${user.email}')) AS TMP(EMAIL) 
        ON A.EMAIL=TMP.EMAIL

, поэтому в этой части ключевое слово AS создает ли TMP новую таблицу или нет?

Я пытаюсь провести аналогию с MySQL, но она ошибается.

select *
from table1 join
     table2 using (id) as TMP(EMAIL); 

1 Ответ

0 голосов
/ 15 апреля 2019

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); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...