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

Как получить только первую строку в LEFT JOIN?

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

How to Retrieve Only the First Row in a LEFT JOIN?

Извлечение только первой строки в LEFT JOIN

В SQL выполнение операции LEFT JOIN может привести к получению нескольких строк из правой таблицы сопоставляется с одной строкой из левой таблицы. В некоторых сценариях желательно получить только первую строку из правой таблицы для каждой строки левой таблицы.

Рассмотрим следующую упрощенную структуру данных:

**Feeds**
id | title | content
----------------------
1  | Feed 1 | ...

**Artists**
artist_id | artist_name
-----------------------
1 | Artist 1
2 | Artist 2

**feeds_artists**
rel_id | artist_id | feed_id
----------------------------
1 | 1 | 1
2 | 2 | 1

Чтобы получить статьи канала и связать с каждым каналом только первого исполнителя, можно использовать следующий синтаксис:

SELECT *
FROM feeds
LEFT JOIN feeds_artists ON wp_feeds.id = (
    SELECT feeds_artists.feed_id FROM feeds_artists
    WHERE feeds_artists.feed_id = feeds.id
    LIMIT 1
)
WHERE feeds.id = '13815'

Однако этот подход может не дать желаемых результатов. Для достижения цели рассмотрите следующую альтернативу:

SELECT *
FROM feeds f
LEFT JOIN artists a ON a.artist_id = (
    SELECT
      MIN(fa.artist_id) a_id
    FROM feeds_artists fa 
    WHERE fa.feed_id = f.id
)

Эта модификация использует функцию MIN() для определения исполнителя с наименьшим идентификатором, предполагая, что идентификаторы исполнителей увеличиваются с течением времени. В результате LEFT JOIN будет извлекать только первого исполнителя, связанного с каждым каналом.

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

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

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

Copyright© 2022 湘ICP备2022001581号-3