Рубрики
Uncategorized

Разница между условным размещением запроса MySQL на и где

Автор оригинала: David Wong.

Представил

Сегодня, когда я писал 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

FROM 
ON 
 JOIN 
WHERE 
GROUP BY 
HAVING 
SELECT 
DISTINCT 
ORDER BY 
LIMIT 

ЛЕВАЯ роль ПРИСОЕДИНЕНИЯ

Разница в наборах результатов связана не только с приоритетом SQL, но и с приоритетом SQL. ЛЕВОЕ СОЕДИНЕНИЕ Из

Условия, стоящие за on, действительны только для правой таблицы при использовании соединения слева

  • Включено-это условие, используемое при создании временных таблиц. Независимо от того, работает условие или нет, оно возвращает строки из левой таблицы (table_name1).
  • Где условие, используемое после создания временной таблицы. В это время, независимо от того, используется левое соединение или нет, пока условие не выполняется, все отфильтровывается.

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

Ссылка: Шаг за шагом: Обзор архитектуры MySQL – > Процесс выполнения запроса – > Порядок синтаксического анализа SQL, разница между условиями размещения on и where в операции соединения MySQL слева и разница между условиями фильтрации on и where в SQL.