Есть ли разница между этими двумя SQL JOINS?

Предположим, у нас есть эти три таблицы:

Моряки (сид, имя, рейтинг), Резерв (сид, ставка, день) и Лодка(ставка,название,цвет)

Я хочу ПРИСОЕДИНИТЬСЯ к 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

Заранее спасибо!

Совет сегодняшнего дня: всегда используйте современный, явный синтаксис JOIN. Легче писать (без ошибок), легче читать (и поддерживать) и проще преобразовать во внешнее соединение, если это необходимо.

jarlh 02.05.2019 11:27

(Кстати, эти два запроса вернут один и тот же результат.)

jarlh 02.05.2019 11:27

@jarlh Спасибо за редактирование. Но как вы изменили синтаксис? Как раскрасить ключевые слова?

MJ13 02.05.2019 11:30
stackoverflow.com/editing-help
jarlh 02.05.2019 11:34

В частности, форматирование, используемое здесь, представляет собой «блок кода», который вы можете применить к выделенному тексту в редакторе с помощью кнопки {} или вручную, добавив перед каждой строкой блока кода четыре пробела.

Aaron 02.05.2019 11:37

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

Woozar 02.05.2019 11:37
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
7
141
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Точно так же, хотя более новый стиль явного соединения считается лучшим способом сделать это. Его легче читать, отлаживать и поддерживать.

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

Другие вопросы по теме