«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как в MySQL работают самосоединения для сравнения строк из одной таблицы?

Как в MySQL работают самосоединения для сравнения строк из одной таблицы?

Опубликовано 20 ноября 2024 г.
Просматривать:504

How do self-joins work in MySQL to compare rows from the same table?

Как работает самосоединение MySQL?

Самостоятельное объединение в MySQL предполагает объединение двух экземпляров одной и той же таблицы, обычно с помощью разные псевдонимы. Он позволяет сравнивать строки одной и той же таблицы по определенным критериям.

Объяснение запроса

Давайте разберем данный запрос:

SELECT event2.id, event2.startdate, event2.price
FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
WHERE event1.id=$id

FROM Предложение

Это указывает, к каким таблицам присоединяться:

FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 

Одна и та же таблица mm_eventlist_dates используется дважды и имеет псевдонимы event1 и event2.

ON Предложение

Это объединяет два экземпляра таблицы на основе условия:

ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)

Он находит строки в event2, где начальная дата соответствует дню после конечной даты соответствующую строку в событии1.

Условие WHERE

Это фильтрует результаты на основе указанного условия:

WHERE event1.id=$id

Выбирает строки из события 1, где идентификатор соответствует заданной переменной $id.

Предложение SELECT

Выбирает нужные поля из объединенных строк :

SELECT event2.id, event2.startdate, event2.price

Он извлекает идентификатор, дату начала и цену из экземпляра event2, который содержит информацию о событиях, следующих за указанным событием. (событие1) на один день.

Визуальная демонстрация

Представьте, что в таблице mm_eventlist_dates есть следующие записи:

event1.idevent1.enddateevent2.idevent2.startdate
101.03.2023202.03.2023
3 2023-03-0342023-03-04

По данному запросу:

  • Он извлекает событие 1 с идентификатором, равным $id (например, 1).
  • Он вычисляет дату окончания плюс один день (2023-03-02).
  • Он ищет строки в событии 2 с той же датой начала (2023-03-02).
  • Он возвращает идентификатор, дату начала и цену соответствующей строки event2.

Это демонстрирует, как MySQL сам -join позволяет идентифицировать связанные строки на основе заданных критериев даже внутри одной таблицы.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3