簡體   English   中英

SQL-選擇要加入的第一條匹配記錄

[英]SQL - selecting first matching record for join

使用MySQL,我從成員->項目->照片中獲得了一組具有1-> N關系的表。

我正在嘗試從第一張關聯的照片中選擇一個成員商品的列表+一些列(首先,我的意思是排序順序最低的照片)。

目前,我有這個查詢,它的工作,但似乎過於復雜。 有沒有更簡單的方法和/或如何改進此查詢。 特別是,我擔心最里面的select語句-MySQL將優化此語句以使其僅處理相關成員的照片,並且我是否應該在其中使用其他where子句來幫助對其進行優化。

SELECT items.member_id, items.item_id, items.title, p.photo_id, p.blob_id, p.image_width, p.image_height
FROM items
LEFT JOIN
(
    SELECT photos.item_id, photos.photo_id, photos.blob_id, photos.image_width, photos.image_height
    FROM 
    (
        SELECT item_id, min(sort_order) as min_sort_order
        FROM photos
        GROUP BY item_id
    ) AS x 
    INNER JOIN photos on photos.item_id=x.item_id and photos.sort_order=x.min_sort_order
) AS p ON items.item_id = p.item_id
WHERE items.member_id=1
ORDER BY items.title;
SELECT 
        items.member_id, items.item_id, items.title, photo.photo_id, photo.blob_id, photo.image_width, photo.image_height
FROM 
        items
JOIN photos on items.item_id = photos.item_id
JOIN (SELECT item_id, min(sort_order) as min_sort_order
        FROM photos
        GROUP BY item_id) min_photo on photos.item_id=min_photo.item_id and photos.sort_order=min_photo.min_sort_order
WHERE items.member_id=1
ORDER BY items.title;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM