Почему () в операторе SQL является обязательным «выбрать * из подарков, отправленных с помощью (giftID);»? - PullRequest
1 голос
/ 24 апреля 2010

Почему () является обязательным в операторе SQL

select * from gifts INNER JOIN sentgifts using (giftID); 

? () Обычно используется для указания группировки чего-либо. Но в этом случае мы должны использовать 2 или более имен полей ...? в приведенном выше примере, все может быть ясно, что это 1 поле, просто парсер не должен обходить (), когда все ясно? (например, на языке Ruby).

Ответы [ 2 ]

1 голос
/ 24 апреля 2010

Да, вы можете указать несколько столбцов внутри предложения using, как показано ниже.

using(col_1,col_2,col_3)
1 голос
/ 24 апреля 2010

Вы можете указать список столбцов , отметьте здесь .

И это обязательно, потому что синтаксические исключения взрывают синтаксический анализатор и ухудшают производительность.

При этом можно утверждать, что USING сам по себе уже является просто синтаксическим сахаром , это всего лишь ярлык для указания соединения с обычным синтаксисом ON в случае имена столбцов одинаковы для объединенных таблиц.

Поскольку вы можете присоединиться ON несколько столбцов USING просто делает то же самое.

Следующие операторы , следовательно, эквивалент :

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