Предположим, у нас есть эти три таблицы:
Моряки (сид, имя, рейтинг), Резерв (сид, ставка, день) и Лодка(ставка,название,цвет)
Я хочу ПРИСОЕДИНИТЬСЯ к Table Sailors с Table Reserve. Являются ли следующие утверждения эквивалентными? Кто-то более эффективен?
SELECT S.sid, S.name, R.bid
FROM Sailors as S,
Reserves as R
WHERE S.sid = R.sid
SELECT S.sid, S.name, R.bid
FROM Sailors as S
INNER JOIN Reserves as R ON S.sid = R.sid
Заранее спасибо!
(Кстати, эти два запроса вернут один и тот же результат.)
@jarlh Спасибо за редактирование. Но как вы изменили синтаксис? Как раскрасить ключевые слова?
В частности, форматирование, используемое здесь, представляет собой «блок кода», который вы можете применить к выделенному тексту в редакторе с помощью кнопки {} или вручную, добавив перед каждой строкой блока кода четыре пробела.
Я работал с очень старой версией базы данных (не помню, какой именно), и она не принимала синтаксис неявного соединения. Если это работает, он должен вернуть равный результат, производительность может (что маловероятно) быть немного лучше во втором.
Вы можете обратиться сюда вредные привычки, чтобы избавиться от использования соединений старого стиля


Точно так же, хотя более новый стиль явного соединения считается лучшим способом сделать это. Его легче читать, отлаживать и поддерживать.
DECLARE @Sailors TABLE (sid INT, name VARCHAR(10), rating INT)
DECLARE @Reserve TABLE (sid INT, bid INT, day VARCHAR(10))
INSERT INTO @Sailors VALUES
(1,'name', 10),
(2,'name1', 5),
(3,'name2', 2),
(4,'name3', 3)
INSERT INTO @Reserve VALUES
(1,1,'Monday'),
(2,2,'Monday'),
(3,3,'Monday')
заявления:
SELECT
s.sid,s.name,r.bid
FROM @Sailors AS s, @Reserve AS r
WHERE s.sid = r.sid
возвращает:
sid name bid
1 name 1
2 name1 2
3 name2 3
а также
SELECT
s.sid,s.name,r.bid
FROM @Reserve r
INNER JOIN @Sailors s ON r.sid = s.sid
возвращается
sid name bid
1 name 1
2 name1 2
3 name2 3
Совет сегодняшнего дня: всегда используйте современный, явный синтаксис
JOIN. Легче писать (без ошибок), легче читать (и поддерживать) и проще преобразовать во внешнее соединение, если это необходимо.