Почему () обязателен в SQL-операторе
select * from gifts INNER JOIN sentgifts using (giftID);
? () обычно для определения группировки чего-то. Но в этом случае, мы, как предполагается, можем использовать 2 или больше имен полей...? в примере выше, может быть все ясно, что это - 1 поле, это просто, который синтаксический анализатор не сделан обойти (), когда это все ясно? (такой как на языке Ruby).
Да, вы можете указать несколько столбцов внутри предложения using как показано ниже.
using(col_1,col_2,col_3)
Фактически вы можете указать список столбцов , проверьте здесь .
И это обязательно, потому что синтаксические исключения мешают синтаксическому анализатору и плохо сказываются на производительности.
Тем не менее, можно утверждать, что USING сам по себе уже просто синтаксический сахар , это просто сокращение для указания соединения с обычным синтаксисом ON в случае, если имена столбцов в объединенных таблицах совпадают.
Поскольку вы можете присоединиться к НА нескольких столбцах, ИСПОЛЬЗОВАНИЕ делает то же самое.
Следующие операторы являются , следовательно, эквивалентны :
SELECT A.c1, A.c2, A.c3 FROM TABLE_A A
JOIN TABLE_B B
ON A.c1 = B.c1
ON A.c2 = B.c2
ON A.c3 = B.c3
и
SELECT A.c1, A.c2, A.c3 FROM TABLE_A A
JOIN TABLE_B B
USING (c1,c2,c3)