У меня есть два запроса:Как внутреннее соединение отличается от обычного выбора нескольких таблиц?
SELECT m.id, m.name, f.type, c.id
FROM main AS m, filter AS f, city AS c
WHERE m.id = f.id AND c.name = m.city;
и
SELECT m.id, m.name, f.type, c.id
FROM main AS m
INNER JOIN filter as f ON m.id = f.id
INNER JOIN city AS c ON c.name = m.city;
Оба должны дать мне тот же набор выходов. Я запускал их для небольшого набора значений, и он работал нормально, но когда я запускал их для очень большого набора значений, оба возвращали очень разное количество строк (первая возвращала ~ 500 тыс. Строк, а вторая возвращала ~ 65 тыс. Строк). Есть ли разница в этих двух запросах?
[Изменить]:
Я использую MySQL в качестве СУБД.
Первый возвращает все результаты, второй возвращает общие поля, см. http://www.w3resource.com/mysql/advance-query-in-mysql/inner-join-with -multiple-tables.php – valicu2000
# 2 является стандартным способом ** ANSI/ISO ** - это было предпочтительнее, поскольку стандарт SQL: 1992 (** более 20 лет! **). Вы обязательно должны перестать использовать стиль # 1 разделенных запятыми списков таблиц ... –
@marc_s Даже если это правильный совет, это не объясняет, почему у него разные результаты. –