Представил
Сегодня, когда я писал SQL, я столкнулся с проблемой. Требование состоит в том, чтобы данные запроса были отсортированы в обратном порядке в соответствии с оценкой и количеством посещений за последнюю неделю. Проблема в обычном способе письма. день
Набор условий где
Если некоторые данные не были доступны на прошлой неделе, то эти данные не могут быть найдены. Решение состоит в том, чтобы создать условия. ЛЕВОЕ СОЕДИНЕНИЕ
Среднее.
Порядок выполнения инструкции MySQL
Прежде всего, я объясню концепцию, согласно которой порядок, в котором выполняются операторы MySQL, не соответствует порядку, в котором они выполняются. Вот пример SQL
SELECT DISTINCT < select_list > FROM < left_table > < join_type > JOIN < right_table > ON < join_condition > WHERE < where_condition > GROUP BY < group_by_list > HAVING < having_condition > ORDER BY < order_by_condition > LIMIT < limit_number >
Ниже приведен порядок выполнения SQL
FROMON JOIN WHERE GROUP BY HAVING SELECT DISTINCT ORDER BY LIMIT
ЛЕВАЯ роль ПРИСОЕДИНЕНИЯ
Разница в наборах результатов связана не только с приоритетом SQL, но и с приоритетом SQL. ЛЕВОЕ СОЕДИНЕНИЕ
Из
Условия, стоящие за on, действительны только для правой таблицы при использовании соединения слева
- Включено-это условие, используемое при создании временных таблиц. Независимо от того, работает условие или нет, оно возвращает строки из левой таблицы (table_name1).
- Где условие, используемое после создания временной таблицы. В это время, независимо от того, используется левое соединение или нет, пока условие не выполняется, все отфильтровывается.
Это выдержки из двух материалов, которые можно очень хорошо обобщить (оригинальная ссылка приведена ниже, включая примеры).
Ссылка: Шаг за шагом: Обзор архитектуры MySQL – > Процесс выполнения запроса – > Порядок синтаксического анализа SQL, разница между условиями размещения on и where в операции соединения MySQL слева и разница между условиями фильтрации on и where в SQL.