Это вопрос удобства. Не обязательно, но он должен иметь свое место, например, в интерактивном запросе (каждое нажатие клавиши приближает нас к RSI) или некоторые простые случаи ручного написания SQL даже в производственном коде (да, я это написал. И даже видел JOIN USING
в серьезном коде, написанном мудрыми программистами, кроме меня. Но я отвлекаюсь).
Я нашел этот вопрос при поиске подтверждения того, что SS отсутствует эта функция, и я ее получил. Меня только смущает количество ненависти против этого синтаксиса, которое я отношу к синдрому Sour Grapes. Я чувствую себя забавно, когда читаю лекции с покровительственным тоном Сладости (читай: синтаксический сахар) плохо для вашего здоровья. Вы все равно не нуждаетесь в этом.
Что приятно в синтаксисе JOIN USING
, является то, что он работает не только на именах столбцов, но и на псевдонимов столбцов, например:
-- foreign key "order".customerId references (customer.id)
SELECT c.*, c.id as customerId, o.* from customer c
join "order" o using (customerId);
Я не согласен с «Присоединиться к использованию будет лучше, если только (...)». Или аргумент, что вам могут потребоваться более сложные условия. С другой точки зрения, зачем использовать JOIN ON
? Почему бы не быть чистым и не переместить все условия в статью WHERE
?
SELECT t1.*, t2.* from t1, t2 where t2.t1_id = t1.id;
теперь я мог сойти с ума и спорить, как это чистый способ выразить присоединиться, и вы можете сразу же начать добавлять больше условий в пункте где, что вы обычно нужно в любом случае, бла-бла-бла ..
Поэтому вы не должны пропустить этот особый синтаксис слишком дорого, но нечего радоваться за его отсутствие («Фу, это было близко. Так хорошо, что не нужно ПРИСОЕДИНИТЬСЯ ИСПОЛЬЗОВАТЬ. боли ").
Итак, в то время как я лично использую JOIN ON
99% времени, я не чувствую, что нет Schadenfreude, когда нет JOIN USING
или NATURAL JOIN
.
+1 для прикрепления к синтаксису ON. – Fosco
Я думал по тем же линиям с 'NATURAL JOIN' - было бы лучше, если бы этот тип соединения вместо этого присоединился к некоторому« внешнему ключу »(поскольку это означает, что таблицы« NATURAL JOIN'ing », например, столбцы IsDeleted, были бы бессмысленными). Спасибо, Билл. –
Довольно. Легко добавить столбец в таблицу, чтобы пропустить этот момент и создать условие объединения, когда он не был предназначен (он говорит, сделав именно это в ряде случаев). –